Я использую метод getPixel(), чтобы вернуть значение rgb каждого пикселя в растровое изображение. Затем я использую операторы if() для сравнения значений rgb с моими предопределенными значениями rgb, а затем выполняю код, если утверждение истинно. Как видно из нижеприведенного:с использованием метода getPixel(), а затем проверки значений rgb
for(int x=startX; x<w; x++){
for(int y=startY; y<h; y++){
int pixel = img.getPixel(x, y);
if(pixel == Color.rgb(255, 255, 255)); //some code
if(pixel == Color.rgb(255, 0, 0)); //some code
if(pixel == Color.rgb(255, 255, 0)); //some code
if(pixel == Color.rgb(120, 60, 0)); //some code
}
Моя проблема заключается в том, что хотя первые три оператора if() выполняются, четвертый никогда не делает. Я знаю, что мое изображение содержит пиксели со всеми этими значениями rgb, потому что я сам сделал изображение. Я предполагаю, что проблема заключается в том, что в цветовом классе нет предопределенной переменной со значением rgb (120,60,0). Так что в основном мне интересно, есть ли вообще вокруг этой проблемы. Может быть, лучший метод, чем getPixel()? Мне просто нужен код в четвертом случае if() для выполнения.
Edit- подробнее:
Мое изображение имеет расширение PNG. Я загрузить его в растр следующим образом:
public static Bitmap loadBitmap(String filename, boolean transparency) {
InputStream inputStream = null;
try {
inputStream = MainActivity.assets.open(filename);
} catch (IOException e) {
e.printStackTrace();
}
BitmapFactory.Options options = new BitmapFactory.Options();
if (transparency) {
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
} else {
options.inPreferredConfig = Bitmap.Config.RGB_565;
}
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null,
options);
return bitmap;
}
Изображение извлекается за счет активов переменной, которая является статической переменной в моем классе MainActivity типа AssetManager. Я инициализирую эту переменную, указав assets = getassets(). Мое изображение находится внутри папки моих ресурсов, которую затем извлекает AssetManager.
Как вы создаете и загружаете растровое изображение? Какую плотность цвета он имеет? Какой тип файла он хранит? – AterLux
только что отредактировал для вас –
, когда RGB_565 возможно никогда не иметь 120, 60 значений – AterLux