Java Android CMYK模式

Java Android CMYK模式,java,android,graphics,cmyk,Java,Android,Graphics,Cmyk,我有一个CMYK模式的位图,它不能正确显示,而且在Android上,在某些点上根本不能显示。谷歌搜索并没有返回很多答案,所以我不得不在这里问我如何处理CMYK模式的图像 谢谢 更新 好的,请提供更多信息。我在资源中有一个图像,我用它构建了一个位图。然后,当我构建位图时,我会这样做: Bitmap bm = Bitmap.createBitmap(width, height, Config.ARGB_8888); 图像处于CMYK模式。 当我把它放在ImageView上时,它显示为白色框。未显示

我有一个CMYK模式的位图,它不能正确显示,而且在Android上,在某些点上根本不能显示。谷歌搜索并没有返回很多答案,所以我不得不在这里问我如何处理CMYK模式的图像

谢谢

更新

好的,请提供更多信息。我在资源中有一个图像,我用它构建了一个位图。然后,当我构建位图时,我会这样做:

Bitmap bm = Bitmap.createBitmap(width, height, Config.ARGB_8888);
图像处于CMYK模式。 当我把它放在ImageView上时,它显示为白色框。未显示


希望这有帮助。

CMYK是一种打印格式。所有“标准”结构,如jpeg、位图等,都是用于屏幕的,并像读取RGB一样读取您的结构。将结果放在PDF或其他postscript中,您将看到它。我成功了!我发现了一个很好的工具,可以在Android平台上正确处理*.jpg文件,并使用了CMYK、YCCK等不常见的颜色空间。 使用,它是免费和易于配置的android库。 以下是用于将CMYK图像转换为RGB颜色空间的片段:

ImageInfo info = new ImageInfo(Environment.getExternalStorageDirectory().getAbsolutePath() + "/cmyk.jpg");
MagickImage imageCMYK = new MagickImage(info);

Log.d(TAG, "ColorSpace BEFORE => " + imageCMYK.getColorspace());
boolean status = imageCMYK.transformRgbImage(ColorspaceType.CMYKColorspace);
Log.d(TAG, "ColorSpace AFTER => " + imageCMYK.getColorspace() + ", success = " + status);

imageCMYK.setFileName(Environment.getExternalStorageDirectory().getAbsolutePath() + "/cmyk_new.jpg");
imageCMYK.writeImage(info);
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath()
            + "/Docs/cmyk_new.jpg");
if (bitmap == null) {
    //if decoding fails, create empty image 
    bitmap = Bitmap.createBitmap(imageCMYK.getWidth(), imageCMYK.getHeight(), Config.ARGB_8888);
}    
ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView1.setImageBitmap(bitmap);

我还使用了来自 下面是我的代码,您不需要在存储上创建新文件:

try {
        ImageInfo info = new ImageInfo(Environment.getExternalStorageDirectory().getAbsolutePath() + "/cmyk.jpg");
        MagickImage image = new MagickImage(info);

        if(image.getColorspace() == ColorspaceType.CMYKColorspace) {
            Log.e("ImageMagick", "ColorSpace BEFORE => " + image.getColorspace());
            boolean status = image.transformRgbImage(ColorspaceType.CMYKColorspace);
            Log.e("ImageMagick", "ColorSpace AFTER => " + image.getColorspace() + ", success = " + status);
        }

        Bitmap bitmap = MagickBitmap.ToBitmap(image);
        Log.e("ImageMagick", "bitmap is " + bitmap);
        ivCMYK.setImageBitmap(bitmap);
    } catch (MagickException e) {
        Log.e("MagickException", e.getMessage());
    }
是一个示例代码,用于显示(Android不支持),它是从URL获取的


有两种方法称为“getCMYKImageFromPath”和“getCMYKImageFromURL”。

对于这样一个模糊的问题,您希望有人如何帮助您。”手柄“?”显示不正确…一点也不?您希望答案采用什么形式?请提供更多细节:您尝试过什么,您是否确定了不起作用的情况之间的任何共性,以及当显示错误时,它是如何错误的?