【问题标题】:Color Banding Android Solution彩带安卓解决方案
【发布时间】:2012-07-12 12:59:50
【问题描述】:

Android Activity 或 OpenGL 中带状图像的可能解决方案是什么。

看看下面的答案。

希望对你有帮助

【问题讨论】:

    标签: android eclipse image artifact dithering


    【解决方案1】:

    色带解决了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,您只需绑定应用上层函数后创建的位图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多