1

長方形の入力画像が与えられた場合、最大 10 色を使用してサイズ 40x40 ピクセルの出力画像を作成したいと思います。したがって、必要な 2 つの操作は、再スケーリングと減色です。

次の ImageMagick コマンドがそのトリックを実行します。

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

Javaで対応する結果をどのように達成しますか?

ImageMagickへのシェルアウトはオプションではありません:-)

4

2 に答える 2

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)
    {
    }
于 2009-08-25T21:53:11.090 に答える
-1

jai.dev.java.netでJavaAdvancedImaging(JAI)を検索してください

于 2009-08-25T21:11:28.367 に答える