2

その問題を扱った別の投稿があることを知っています。JMagickを使用して色空間を変換する方法は?しかし、私には理解できないことがあります。

    String baseName = "Pictures/";
    String fileName = "dragon.gif";
     MagickImage imageCMYK;
     try {
     ImageInfo info = new ImageInfo( baseName + fileName);
     info.setColorspace(ColorspaceType.CMYKColorspace);

     System.out.println("ColorSpace BEFORE => " + info.getColorspace());

     imageCMYK = new MagickImage( info );


     System.out.println("ColorSpace AFTER => " +
             imageCMYK.getColorspace());

新しいMagickImageを作成すると、CMYKColorSpaceは取得したとおりに保持されません。

ColorSpace BEFORE => 12(CMYK)

画像をCMYKからRGBに正しく変換するにはどうすればよいですか?

ありがとう。

ColorSpace AFTER => 1(RGB)

4

2 に答える 2

1

更新:画像を使用していGIFます。これらは「CMYK」をサポートしていないため、変換は機能しません(imagemagickのWebサイトにあるこのフォーラム投稿を参照してください)。


を使用しMagicImage.rgbTransformImage(ColorspaceType.CMYKColorspace)ます。APIから:

public boolean rgbTransformImage(int colorspace)はMagickExceptionをスローします

参照画像をRGBから代替色空間に変換します。変換行列は標準的なものではありません。重みは、変換された値の範囲を[0..MaxRGB]に正規化するように再スケーリングされます。


例:

try {
    MagickImage image = new MagickImage(new ImageInfo(baseName + fileName));

    if (!image.rgbTransformImage(ColorspaceType.CMYKColorspace))
         throw new Exception("Couldn't convert image color space");

    ...
} catch (MagickException e) {
    ...
}
于 2011-09-21T13:45:15.170 に答える
0

これは、PNGなどの他の画像形式ではまだ機能しません。

于 2011-09-22T00:35:18.123 に答える