2016-11-01 25 views
0

私はJavaでCMYK変換に非常に簡単にRGBを書くための作業をしましたし、私の試みが機能していません。誰もが、私はここに使用することはできませんするライブラリや輸入を使用するためのソリューションを見上げることは、助けにはなりませんでした。私は誰かが私の間違いを見て願っています。RGB CMYKへのコンバータ

int w; 
    int c; 
    int m; 
    int y; 
    int k; 

    if (r+b+g==0) { 
     System.out.println("Ist alles 0"); 
    } else { 
     int max = Math.max(Math.max(r,b),g); 
     w = (max/255); 

     r = r/255; 
     g = g/255; 
     b = b/255; 

     c = ((w-r)/w); 
     m = ((w-g)/w); 
     y = ((w-b)/w); 
     k = 1-w; 
     System.out.println(c+" "+m+" "+y+" "+k); 
    } 

これは、私がcmykにユーザー入力を介して得たr、g、b値(int)を変換しようとする部分です。

編集:私はこのようなポストがあることを知っているが、解決策は常に私が使用を許可されていないよするライブラリ、輸入が含まれます。

+0

あなたが直面している問題は何ですか.. –

+2

[RGB to CMYKとバックアルゴリズム]の複製が可能です(http://stackoverflow.com/questions/4858131/rgb-to-cmyk-and-back-algorithm) – Shloim

+0

私はすべての変数CMYとkの値として0を取得します。私が入力として与えるものは何でも。 @Shloimはその記事を見たが、彼らは、私が使用することを許可されていないよするライブラリを使用しています。私がすでに述べたことに注意してください。 –

答えて

1

rの初期値が255未満であり、rがintであるため、以下のコードではrにゼロが格納されます。だから、整数の除算r/255ごとにゼロになります。

r = r/255; 

代わりにあなたが以下の(部門のオペランドの少なくとも一方が二重で、他にあなたが倍増することをキャストできることを確認してください)

を試してみてください、二重の変数で除算の結果を格納することができます
double rC = r/255.0; 
c = ((w-rC)/w); 
+1

もちろん、唯一の問題ではありませんでしたが、私はそれを働かせるために手伝ってくれました!ありがとうございました! –

関連する問題