performance - 快速将 RGBA 转换为 ARGB

标签 performance rgba argb

我正在尝试将 rgba 缓冲区转换为 argb,是否有任何方法可以改进下一个算法,或者任何其他更快的方法来执行此类操作?
考虑到 alpha 值在 argb 缓冲区中一次并不重要,并且应始终以 0xFF 结束。

int y, x, pixel;

for (y = 0; y < height; y++)
{
    for (x = 0; x < width; x++)
    {
     pixel = rgbaBuffer[y * width + x];
     argbBuffer[(height - y - 1) * width + x] = (pixel & 0xff00ff00) | ((pixel << 16) & 0x00ff0000) | ((pixel >> 16) & 0xff);
    }
}

最佳答案

我将只关注交换功能:

typedef unsigned int Color32;

inline Color32 Color32Reverse(Color32 x)
{

    return
    // Source is in format: 0xAARRGGBB
        ((x & 0xFF000000) >> 24) | //______AA
        ((x & 0x00FF0000) >>  8) | //____RR__
        ((x & 0x0000FF00) <<  8) | //__GG____
        ((x & 0x000000FF) << 24);  //BB______
    // Return value is in format:  0xBBGGRRAA
}

关于performance - 快速将 RGBA 转换为 ARGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11259391/

相关文章:

python - 将 RGBA numpy 数组转换为二进制 2d numpy 数组

javascript - 将 0-1 值转换为十六进制颜色?

Android:位图到 RGBA 并返回

Python 缓冲区复制速度 - 为什么数组比字符串慢?

android - 位图转字节数组占用内存大

colors - 如何从两个 RGB 值中找到一种颜色的 RGBA 值?

css - 除了 'opacity' 之外,RGB 和 RGBA 之间有什么区别

java - 在 BufferedImage 上获取和设置 RGB 值

javascript - 使用大数组进行反向地理编码是最快的方法吗? - JavaScript 和性能

C#9、.NET 5.0 字段比发布中的属性更快