gpt4 book ai didi

android - 色带 Android 解决方案

转载 作者:行者123 更新时间:2023-11-29 22:03:11 24 4
gpt4 key购买 nike

Android Activity 或 OpenGl 中出现 strip 图像的可能解决方案是什么。

请看下面的答案。

希望对你有帮助

最佳答案

色带已解决 ooooooooooyyyyyyyeaaaaaaaaaa

我分两个阶段解决了色带问题

1) * 当我们使用 BitmapFactory 解码资源时,它解码显示色带的 RGB565 资源,而不是使用 ARGB_8888,所以我使用 BitmapFactory.Options 将解码选项设置为 ARGB_8888

第二个问题是每当我缩放位图时它再次出现条纹

2) 这是困难的部分,经过大量搜索,终于成功了* 用于缩放位图的方法 Bitmap.createScaledBitmap 在缩放后也将图像减少为 RGB565 格式我得到了带状图像(解决这个问题的旧方法是在 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,您只需绑定(bind)应用上层函数后创建的位图

关于android - 色带 Android 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com