私は部屋の画像を表示するアプリケーションを作成しています。ユーザーが画像をクリックすると、画像がオブジェクトの単語でポップアップし、その名前がデバイスに表示されます。これを行うために、オブジェクトの場所に色付きのブロックを持つパターンイメージと、ブロックの特定の色にマップされた異なるオブジェクト名を持つテキストファイルを読み込みます。AndroidアプリケーションでJavaで生成された画像を解析する
また、これらの2つのファイルを作成するために使用できるJavaアプリケーションも作成しました。ユーザは、画像上に長方形を描画し、アプリケーションは、描画された長方形を新しい画像ファイルに保存する。ここで
は、画像を保存/作成するためのJavaコードです:私はフォトショップ、ペイントなどで画像を開くと
BufferedImage i = new BufferedImage(img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics g = i.getGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, i.getWidth(), i.getHeight());
//draw all the rectangles on the image
for(Rectangle r: rects.keySet()){
g.setColor(rects.get(r));
g.fillRect(r.x, r.y, r.width, r.height);
}
//write the BufferedImage to the file
try {
ImageIO.write(i, "png", saveTo);
} catch (IOException e) {
e.printStackTrace();
}
、それは色のブロックは、彼らがすることになっている色であることを確認します。
Android搭載端末に読み込んだとき、同じ色ではありません。色はそれぞれの色ごとに1〜3の範囲で異なります(したがって、25:0:0の色は24:0:0または22:0:0のように表示されます)。
デバイス上で、イメージをビットマップとしてロードし、TouchEvent.getX()およびgetY()を使用してイメージ上の位置を見つけます。その後、Bitmap.getPixel(x、y)を使用して特定の色を取得します。
私がPhotoshopやPaintのようなエディタを使用すると、普通のように読める完璧な画像が得られます。私のユーザは独自のエディタアプリケーションを要求しているので、configファイルも作成できます。
ご迷惑をおかけして申し訳ありませんが、ご長時間ご利用いただきありがとうございました!
イメージをアセットとしてロードしています。私はちょうど私がJavaコードでビットマップを間違って設定したことに気が付いた(私はTYPE_INT_ARGBの代わりにTYPE_INT_RGBを使用した) – fitztho