Java – a fast algorithm for inverting ARGB color values to ABGR?

I am using intbuffer to operate the pixels of bitmap, but the value in the buffer should be aabbggrr and the color constant is aarrggbb I know I can use color argb,Color. a. ... to reverse, but I don't think it's perfect

I need to manipulate a lot of pixels, so I need an algorithm that can execute this operator in a short time I thought of this bit expression, but it is incorrect:

0xFFFFFFFF ^ pSourceColor

If there is no better, maybe I will use the displacement operator (execute color. A,...) instead of calling the function to reduce the time

Edit:

This is the function I currently convert, although I think there should be a better algorithm (fewer operators) to execute it:

private int getBufferedColor(final int pSourceColor) {
    return
            ((pSourceColor >> 24) << 24) |          // Alpha
            ((pSourceColor >> 16) & 0xFF) |         // Red  -> Blue
            ((pSourceColor >> 8) & 0xFF) << 8 |     // Green
            ((pSourceColor) & 0xFF) << 16;          // Blue -> Red
}

Solution

Since a and G are already in place, you can do better by shielding B and R and then adding them Not tested, but should be 95% right:

private static final int EXCEPT_R_MASK = 0xFF00FFFF;
private static final int ONLY_R_MASK = ~EXCEPT_R_MASK;
private static final int EXCEPT_B_MASK = 0xFFFFFF00;
private static final int ONLY_B_MASK = ~EXCEPT_B_MASK;

private int getBufferedColor(final int pSourceColor) {
    int r = (pSourceColor & ONLY_R_MASK) >> 16;
    int b = pSourceColor & ONLY_B_MASK;
    return
      (pSourceColor & EXCEPT_R_MASK & EXCEPT_B_MASK) | (b << 16) | r;
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>