【问题标题】:How to efficiently get and set bitmap pixels如何有效地获取和设置位图像素
【发布时间】:2015-05-28 05:12:39
【问题描述】:

我目前正在制作一个应用程序,该应用程序涉及更改位图中像素的 RGB 值并在之后创建一个新位图。

我的问题是我需要帮助提高这个过程的速度。 (使用inSampleSize = 2 处理位图可能需要几分钟,而处理inSampleSize = 1 可能需要永远)现在,我正在使用getPixelsetPixel 方法来改变像素,并相信这两种方法是问题,因为它们效率很低。 getPixels 方法不适合,因为我没有按顺序更改每个像素(例如,获取一个像素并将其周围 5 个像素的半径更改为相同的颜色),除非有人知道使用 getPixels 的方法(也许能够将像素放在二维数组中)。

这是我的代码的一部分:

public static final alteredBitmp(Bitmap bp)
{


 //initialize variables
 // ..................


  Bitmap bitmap = Bitmap.createBitmap(width, height,
            Bitmap.Config.ARGB_8888);

    for (int x = 0; x < width; x++) {
        int left = Math.max(0, x - RADIUS);
        int right = Math.min(x + RADIUS, width - 1);
        for (int y = 0; y < height; ++y) {

            int top = Math.max(0, y - RADIUS);
            int bottom = Math.min(y + RADIUS, height - 1);

            int maxIndex = -1;

            for (int j = top; j <= bottom; j++) {
                for (int i = left; i <= right; i++) {

                    pixelColor = bitmap.getPixel(i, j);

                    //get rgb values
                    //make changes to those values
                }
            }
        }
     }

     //set new rgb values


     bitmap.setPixel(x, y, Color.rgb(r, g, b));

     //return new bitmap

提前非常感谢!

【问题讨论】:

  • 您可以获取 imageview 尺寸并使您的位图与之相关
  • 感谢您的帮助,但我不想扭曲原始位图的纵横比。

标签: android colors bitmap pixel pixels


【解决方案1】:

考虑查看 RenderScript,它是 Android 的高性能计算框架。当您迭代宽度 x 高度的像素数并更改现代设备中可能约为一百万像素或更高的每个像素时,在单个线程中执行此操作可能需要几分钟时间。 RenderScript 可以在可能的情况下通过 CPU 或 GPU 并行化操作。

http://android-developers.blogspot.com/2012/01/levels-in-renderscript.html

http://developer.android.com/guide/topics/renderscript/index.html

Google IO 2013 会议: https://youtu.be/uzBw6AWCBpU

RenderScript 兼容性库:http://android-developers.blogspot.com/2013/09/renderscript-in-android-support-library.html

【讨论】:

  • +Morrison 感谢您的链接!他们非常有帮助:)
猜你喜欢
  • 2015-02-02
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
相关资源
最近更新 更多