2009-08-25 4 views
1

Étant donné une image d'entrée rectangulaire, je voudrais créer une image de sortie de taille 40x40 pixels en utilisant un maximum de 10 couleurs. Par conséquent, les deux opérations nécessaires sont la mise à l'échelle et la réduction de la couleur.Redimensionnement combiné et réduction de la couleur d'une image en Java?

La commande ImageMagick suivant le tour est joué:

convert input.png -scale 40x40 -colors 10 output.png 

Comment voulez-vous obtenir le résultat correspondant en Java?

Bombardements sur ImageMagick est pas une option :-)

Répondre

2

Quelque chose comme ça travaillerait en utilisant JAI:

// now resize the image 
    ParameterBlock pb = new ParameterBlock(); 
    pb.addSource(image); // The source image 
    pb.add(wScale); // The xScale 
    pb.add(hScale); // The yScale 
    pb.add(0.0F); // The x translation 
    pb.add(0.0F); // The y translation 

    RenderingHints hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);   
    RenderedOp resizedImage = JAI.create("SubsampleAverage", pb, hints); 

    // lastly, write the newly-resized image to an 
    // output stream, in a specific encoding 
    try 
    { 
      FileOutputStream fos = new FileOutputStream(new File(filename)); 
      JAI.create("encode", resizedImage, fos, getImageType(filename), null); 
      ParameterBlock ParameterBlock pb = new ParameterBlock(); 
      ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.TYPE_YCbCr), new int[] {8}, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); 
      pb.add(cm); 
      RenderedOp imgycc = JAI.create("ColorConvert", pb); 
    } 
    catch (FileNotFoundException e) 
    { 
    } 
-1

Cherchez Java Advanced Imaging (JAI) à jai.dev.java.net

Questions connexes