2009-08-25 59 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)