2009-08-25 60 views
1

給定一個矩形輸入圖像,我想用最多10種顏色創建一個尺寸爲40x40像素的輸出圖像。因此,所需的兩個操作是重新縮放和減色。Java中圖像的組合重新縮放和顏色縮減?

下面的ImageMagick命令的伎倆:

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

你將如何實現在Java中相應的結果?

炮擊,以ImageMagick的是不是:-)

回答

2

像這樣的事情會工作使用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

一個選項在jai.dev.java.net查找Java高級圖像(JAI)