2011-07-08 7 views
3

私はCMYKモードのビットマップを持っていますが、これはAndroidでは正しく表示されず、まったく表示されません。グーグルは多くの答えを返さなかったので、私はここでどのようにCMYKモードの画像を扱うべきですか?Android CMYKモード

おかげ

UPDATE

要求されるように[OK]を、より多くの情報。私は資産の中にあるイメージを持っていて、そこからビットマップを構築します。ビットマップを作成すると、次のようになります。

Bitmap bm = Bitmap.createBitmap(width, height, Config.ARGB_8888); 

イメージはCMYKモードです。 ImageViewに置くと、白いボックスとして表示されます。図示されていない。

これが役に立ちます。

+2

このようなあいまいな質問を誰かがどのように助けてくれると思いますか? 'ハンドル'? '正しく表示されない...全くありません'?ここで答えがどのような形になると思いますか? –

+0

詳細を記入してください:何を試しましたか、うまくいかない状況と表示が間違っている場合の共通点を特定しましたか?間違っていますか? – jefflunt

+0

ここに更新があります。ごめんなさい。 – Pett

答えて

0

CMYKは印刷用のフォーマットです。 jpeg、ビットマップなどのすべての「標準」構造体はSCREEN用であり、RGBのように構造体を読み込みます。結果をPDFやその他のポストスクリプトに入れればOKです。

0

私は作った!私は、CMYK、YCCKなどの珍しい色空間を持つ、Androidプラットフォーム上の正しい処理* .jpgファイル用の素敵なツールを見つけました。 https://github.com/puelocesar/android-lib-magickを使用すると、Androidライブラリを無料で簡単に設定できます。ここ は、RGBの色空間にCMYK画像に変換するためのスニペットです:

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); 
0

私はまた、以下https://github.com/puelocesar/android-lib-magick からライブラリを使用uはストレージ上に新しいファイルを作成する必要がいけない、私のコードです:

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()); 
    } 
関連する問題