打开 PNG 文件,编辑透明度 (Alpha) 并在 Android 上保存 Java

Open PNG-File, Edit Transparency (Alpha) and Save on Android with Java

我需要编写一个 Android-应用程序,它使用现有的 PNG 文件,更改它的透明度(比如 50%)并覆盖该文件。

我已经尝试将文件作为位图打开,更改那里的 paint-alpha 并再次保存,但它总是失去透明度值。

MyBitmap.compress(Bitmap.CompressFormat.PNG, 100, myOutputStream);

我已经读到将质量值更改为 0 可能会有所帮助,但这也没有用:

MyBitmap.compress(Bitmap.CompressFormat.PNG, 100, myOutputStream);

我可以证明我的透明度功能有效,但是当我尝试将该图像另存为 PNG 时,透明度会丢失。这就是我使位图透明的方法:

Paint AlphaPaint = new Paint();
AlphaPaint.setAlpha(Math.round(Opacity * 255));
Canvas canvas = new Canvas(MyImage);
canvas.drawBitmap(..., ..., ..., AlphaPaint);

感谢任何帮助!在这种情况下,性能并不重要,如果使用库是最简单的方法,那绝对没问题。提前致谢!

试试这种方法,只需遍历所有像素,然后按您想要的任何百分比减少 alpha,然后将像素设置回该位图。

int A=0, B=0, C=0, D=0, color=0, ncolor=0;

for(int i=0; i<width; i++)
{
    for(int j=0; j<height; j++)
    {
        color = bitmap.getPixel(i,j);
        A = (color >> 24) & 0xff; // Get Alpha
        R = (color >> 16) & 0xff;
        G = (color >>  8) & 0xff;
        B = (color) & 0xff;
        A = A/2; //REDUCE BY HALF SO DIVIDE BY 2(50%)
        ncolor = (A & 0xff) << 24 | (R & 0xff) << 16 | (G & 0xff) << 8 | (B & 0xff);
        bitmap.setPixel(i,j,ncolor);
    }
}

这只是解决问题的基本思路。 希望这对您有所帮助..谢谢。