Какое возможно решение для полосатых изображений в Android Activity или в OpenGl.
Посмотрите на ответ ниже.
Надеюсь, поможет
Какое возможно решение для полосатых изображений в Android Activity или в OpenGl.
Посмотрите на ответ ниже.
Надеюсь, поможет
Цветная полоса решена
Я решил цветовую полосу в два этапа
1) * когда мы используем BitmapFactory для декодирования ресурсов, он декодирует ресурс в RGB565, который показывает цветовую полосу, вместо использования ARGB_8888, поэтому я использовал BitmapFactory.Options для установки параметров декодирования в ARGB_8888.
Вторая проблема заключалась в том, что всякий раз, когда я масштабировал растровое изображение, оно снова становилось полосатым.
2) Это была сложная часть, и потребовалось много поисков, и, наконец, она сработала. прозрачный пиксель в png, но никакие другие форматы, такие как jpg или bmp, не работали), поэтому здесь я создал метод CreateScaledBitmap для масштабирования растрового изображения с исходными конфигурациями растровых изображений в результирующем растровом изображении масштаба (на самом деле я скопировал метод из поста logicnet.dk и переведено на java)
BitmapFactory.Options myOptions = new BitmapFactory.Options();
myOptions.inDither = true;
myOptions.inScaled = false;
myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;//important
//myOptions.inDither = false;
myOptions.inPurgeable = true;
Bitmap tempImage =
BitmapFactory.decodeResource(getResources(),R.drawable.defaultart, myOptions);//important
//this is important part new scale method created by someone else
tempImage = CreateScaledBitmap(tempImage,300,300,false);
ImageView v = (ImageView)findViewById(R.id.imageView1);
v.setImageBitmap(tempImage);
// функция
public static Bitmap CreateScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)
{
Matrix m = new Matrix();
m.setScale(dstWidth / (float)src.getWidth(), dstHeight / (float)src.getHeight());
Bitmap result = Bitmap.createBitmap(dstWidth, dstHeight, src.getConfig());
Canvas canvas = new Canvas(result);
//using (var canvas = new Canvas(result))
{
Paint paint = new Paint();
paint.setFilterBitmap(filter);
canvas.drawBitmap(src, m, paint);
}
return result;
}
Пожалуйста, поправьте меня, если я ошибаюсь. Также прокомментируйте, если это сработало для вас.
Для OpenGl вы просто привязываете растровое изображение, созданное после применения верхних функций.