PNGファイルで緑色のピクセルを検索するサブ機能を備えた小さなAndriodアプリケーションがあります。
プログラムは最初にファイルを処理します。
private Bitmap buildSource(Context context) {
Paint paint = new Paint();
Logger.info("buildSource");
Bitmap form = BitmapFactory.decodeResource(context.getResources(),
R.drawable.form);
// float d = context.getResources().getDisplayMetrics().density;
Bitmap source = Bitmap.createBitmap(form.getWidth(), form.getHeight(),
Config.ARGB_8888);
Canvas canvas = new Canvas(source);
canvas.drawBitmap(form, 0, 0, paint);
form.recycle();
Logger.info("buildSource done " + source);
}
次に、緑色のピクセルを検索します。
for (int y = 0; y < mSource.getHeight(); y++) {
for (int x = source.getWidth() - 1; x > 0; x--) {
int pixel = source.getPixel(x, y);
int green = Color.green(pixel);
int red = Color.red(pixel);
if (0 == red && green > 210 && green < 220) {
// Save pixel position
}
何らかの理由で、このコードを実行している特定のマシンでは機能しません。ピクセルを 1 つずつ印刷すると、red
=0
と緑がという条件に一致するピクセルはありません~215
。これは今までうまくいきました。
画像自体が添付されています:
私はAndroidプログラミングにかなり慣れていないので、少し行き詰まっています。助けていただければ幸いです。
更新: ソース ビットマップとフォーム ビットマップをギャラリーに保存しました (Android プログラミングは楽しいものです)。画像を開くと、緑色のピクセルが灰色のピクセルに置き換えられていることがはっきりとわかります。調整する必要があるバックグラウンド フィルターはありますか? 添付はフォーム画像です: