Traitement d'image en paralléle

abdiabdi - 30 avril 2013 à 17:26
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 2 mai 2013 à 08:28
salut quelqu’un peut m'aider: j'ai un projet consiste a rendre un code séquentiel de traitement d'image parallèle avec les threads voici un petit code séquentiel

protected void reduireImage()
{
BufferedImage imageReduite = new BufferedImage((int)(monImage.getWidth()*0.5),(int)( monImage.getHeight()*0.5), monImage.getType());
AffineTransform reduire = AffineTransform.getScaleInstance(0.5, 0.5);
int interpolation = AffineTransformOp.TYPE_BICUBIC;
AffineTransformOp retaillerImage = new AffineTransformOp(reduire, interpolation);

et merci d'avance

5 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
1 mai 2013 à 09:00
Salut,

Pour créer un thread :

public class ThreadGestionImage extends Thread {

   @Override
   public void run(){
      // Là tu écris ce que ton thread doit faire
   }

}

Et pour le lancer, tu fais new ThreadGestionImage().start() et le contenu de la méthode run sera exécuté dans un thread fils.
0
merci mais si je vais travailler avec deux thread comment je peux diviser le travail
si l deux
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
1 mai 2013 à 19:28
Tu peux lancer deux threads en parallèle, tu travailles sur plusieurs images ?

Si c'est le cas, il faut que tu trouves un moyen de les répartir entre tes deux threads, par exemple, un thread qui traites les images commençant par les lettres A jusqu'à M et le deuxième de N à Z.

Ou alors tu répartis aléatoirement tes images dans deux dossiers et chaque thread traite un dossier.
0
NO je travaille sure une seule image mais je vais diviser l'image en deux et chaque thread travaille sur une partie et je sais pas comment faire !!
par exemple je veux faire ça pour ce code ce le code de réduire l'image

protected void reduireImage()
{
BufferedImage imageReduite = new BufferedImage((int)(monImage.getWidth()*0.5),(int)( monImage.getHeight()*0.5), monImage.getType());
AffineTransform reduire = AffineTransform.getScaleInstance(0.5, 0.5);
int interpolation = AffineTransformOp.TYPE_BICUBIC;
AffineTransformOp retaillerImage = new AffineTransformOp(reduire, interpolation);


et je suis un débutant en java et le 15 dans ce mois je vais rendre ce projet !

et merci tu est très
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
2 mai 2013 à 08:28
Franchement, si tu n'as qu'une seule image, ca ne sert à rien de la diviser en deux treads.

Après, si c'est vraiment ce que tu veux ok, mais ce sera plus long et plus lourd à gérer :
	int w = image.getWidth();
int h = image.getHeight();
BufferedImage img1 = new BufferedImage(w/2,h,BufferedImage.TYPE_INT_RGB);
BufferedImage img1 = new BufferedImage(w/2,h,BufferedImage.TYPE_INT_RGB);
int[] r = new int[w*h];
image.getRGB(0,0,w,h,r,0,w);
//Là tu créés r1 et r2 deux tableaux qui contiennent les pixels de l'image coupée en 2
img1.getRaster().setDataElements(0, 0, w, h, r1);
img2.getRaster().setDataElements(0, 0, w, h, r2);
0
Rejoignez-nous