
javaの色に関して質問します。
現在PixelGrabberで取得したpixelの中である条件を満たすpixelを指定の色に変換するプログラムを書いているのですが、自分が指定している色と実際に出力される色との違いに悩んでいます。
私が調べた範囲の理解だと
pixelはint形式で上の桁から1バイトずつα値(透明度),R,G,Bと表現していると考えています。そこで黒と白を
白=0x00ffffff
黒=0x00000000
と指定しているのですが、真っ黒になってしまいます。指定した色で塗るために知恵を貸してください。お願いします。
----------------実際のアルゴリズムとデータ----------------
ある閾値よりも濃い色→黒
そうでなければ →白
この値をintの配列にいれ直す
配列からMemoryImageSorceを作る。
bufferedImageに変換して
ImageIOのwriteメソッドで書き込む。
---------------------------結果---------------------------
添付の画像
グレースケールっぽい画像を二値化

No.2ベストアンサー
- 回答日時:
変換結果が、こんな感じで、良いのかな??
青一色にしてみました。

そうです。こんな感じです。
どうやって色を指定したのでしょうか?
是非教えてください。
javaで元の画像の色の白い所の内容を見たら
int a(白い所)=-1
これをバイト値でずらした結果
α(α値)=255;
r(レッド)=255;
g(グリーン)=255;
b(ブルー)=255;
0xffffffff=-1;
ですので設定してる値はおかしくないと思うのですが、うまくいきません。
配列からbufferedImageにする方法が違うのでしょうか。
よろしければその当たりを教えていただけないでしょうか。
No.4
- 回答日時:
追伸です。
int white = 0xFFFFFFFF
になり、結果は、-1で言いと思います。
javaでは、C言語のように、unsignedつまり符号なし
表現がないので、0xFFFFFFFFを符号付表現にすると
-1になるはずです。
setRGB、getRGBのセットする色の値は
int型なので、
int red = 0xFFFF0000
int green =0xFF00FF00
int blue =0xFF0000FF
にして、赤なら、redをセットするだけの様です。
どうもありがとうございます。
つまり補数表現になるということですよね。
書かれた値から考えるに赤緑青全てFFなので白色で
白紙の上に赤を書くということをいいたかったのですね。
ご丁寧にどうもありがとうございます。
pixelgrabberではうまくいきそうにないので、
教えていただいた方法でやってみたいと思います。
どうもありがとうございました。
No.3
- 回答日時:
こんにちは、
やった手順を書きます。
まず、Dukeさんの、アップした画像を、キャプチャーして
jpegの画像に変換しました。
gifでも良いのですが。gifだと白黒256段色調に
なるみたいです。
白黒の画は、jpegしても、大体256段色調で、
RとGとBの値が、全部同じ表現になるようです。
例えば 0xFF464646とか、0xFFefefefとか、
0xFFの部分は、不透明を意味しているようです。
また、efより、46の方が、黒っぽくなります。
そこで、jepgの画像を、imageio.readで、
bufferedimageに代入します。
後は、簡単です。
イメージの一点一点をbufferedimageのgetRGBメソッドで
読み込みます。
今回の、境界は、
0xFFFaFaFaにしました。
これ以下の、値は、0xFF0000FFつまり青に変換して、
これ以上の値は、0xFFFFFFFFつまり白に変換しました。
変換方法は、単に、buffereimageのsetRGBメソッドで、
値をセットするだけです。
以上で、二色の画像が出来ました

No.1
- 回答日時:
まずは、System.out.print() でも使って、作った配列の中身を表示してみた方がいいんじゃないかな?
きっと、全部 0x00000000 なんでしょう。
>ある閾値よりも濃い色→黒
>そうでなければ →白
ここの判定法に問題ありそうです。
元データと、判定部分、配列にデータ格納部分のソースを提示された方が、より解決に近づくでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 条件付き書式 ある範囲で色がついているセルと同行の別のセルに色を付けたい 4 2022/04/20 07:04
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Photoshop(フォトショップ) インデザイン 上で、フォトショップの線の色を変えたい 4 2022/06/12 18:49
- その他(クラウドサービス・オンラインストレージ) Googleカレンダーの予定の色を変えたい、文字色を変えたい。 1 2022/10/18 21:43
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- 電気工事士 第1電気工事士実技試験の3番について。。 AB間のケーブル2本中、芯線4本のうち2本のみ白と黒の色の 2 2022/12/10 12:50
- Excel(エクセル) [Excel2016] 相関表等の自動作成 2 2022/08/01 20:34
- HTML・CSS svgクリップパスの応用コーディング方法 2 2022/04/09 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptで文字列のsjis利用...
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
あるディレクトリにある複数の...
-
byte変数の大小を効率よく比較...
-
DBから取得したデータの文字化け
-
JAVAでのShift-JISとEUC-JP間の...
-
ジェネリックのキャストをした...
-
error C2440: 'static_cast' : ...
-
PerlプログラムをJavaに変換す...
-
半角カタカナをローマ字変換す...
-
波線、あるいはWAVEDASH(~)の...
-
アスキーコード表を利用した文...
-
Path型をString型へ変換する(Java)
-
カタカナの「ソ」以降の文字が...
-
int型のゼロ埋め
-
クエリの結果とレコードセット...
-
javaの初歩的な質問です。
-
C言語32bitから64bitの移行につ...
-
byte配列をImageに変換する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
javascriptで文字列のsjis利用...
-
javaの初歩的な質問です。
-
Visual Basic でのコードをASCI...
-
JavaのStringクラスに「外字」...
-
Path型をString型へ変換する(Java)
-
エクセルVBAで「〜」が表現でき...
-
int型のゼロ埋め
-
JAVAでのShift-JISとEUC-JP間の...
-
C言語32bitから64bitの移行につ...
-
UTF-8とUnicodeの互換性
-
文字列の比較
-
COBOLで半角カナを全角カナに変換
-
substring バイト単位でやりたい
-
Windows-31Jからutf-8への変換...
-
カタカナをローマジに変換する。
-
[Javascript]エンターキー押下...
-
byte型のマイナスの扱いについて
-
文字化け対策について
おすすめ情報