ここから本文です

Java 文字列を画像化しピクセル単位に分けるプログラム

nnn********さん

2011/6/413:06:14

Java 文字列を画像化しピクセル単位に分けるプログラム

違うクラスから文字列を受け取り、その文字列を17(縦)×60(横)ピクセルの画像化し各ピクセルの値を配列に格納する。その配列の値を全て表示する。というクラスを作っているのですが、配列内容が全て-1になってしまいなかなか上手くいきません。
どなたか修正お願いします。m(_ _)m



import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;

public class Image_Create{

public void Create(String str) throws InterruptedException{

int w=60;
int h=17;

//受け取った文字列を白黒画像化
BufferedImage image=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
Graphics2D g2d=image.createGraphics();
g2d.setBackground(Color.WHITE);
g2d.clearRect(0,0,w,h);
g2d.setColor(Color.BLACK);
g2d.drawString(str,0,0);

//画像をピクセル毎に分けて配列に格納
PixelGrabber pg = new PixelGrabber(image , 0 , 0 , -1 , -1 , true);
pg.grabPixels();
int pixel[] = (int[])pg.getPixels();

//配列内容表示
for(int i=0;i<pixel.length;i++){
System.out.print(pixel[i]+",");
}
}
}

補足回答ありがとうございます!!おかげさまで完成いたしました。
しかし、pixel配列の値は白の場合-1、黒の場合-16777216が入っております。私の予想では白の場合0、黒の場合255が入っているのかなと考えていたのですがなぜこんな値が入っているのでしょうか?

一応、白黒分けられているので問題ないと言えば問題ないのですが大変気になります。
原因を教えてくださいお願いいたしますm(_ _)m

閲覧数:
1,179
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

xia********さん

編集あり2011/6/416:36:02

32ビットの左8ビットは不透明の場合(透明度を扱わない場合を含めて)
全部 1、つまり -16777216、白は残りの 24 ビットも 1 なので -1、
黒は残りの 24 ビットが 0 なので -16777216。四つに分けたければ
透明度 (x >> 24) & 0xff
赤 (x >> 16) & 0xff
緑 (x >> 8) & 0xff
青 = x & 0xff
それそれが 0 から 255。
ーーーーーーーーーーーーーーーーーーーーーーーー
g2d.drawString(str,0,0); では希望の位置になりません。drawString の
y は (g や y などの下に突き抜けた部分を除く)多くの字の下端です。
ヒント:g2d. getFontMetrics().getAscent()

質問した人からのコメント

2011/6/4 20:54:53

笑う 理解できました、大変わかりやすかったです!!
ありがとうございました m(_ _)m

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる