gpt4 book ai didi

java - 如何在android中将位图设置为ARGB_8888?

转载 作者:行者123 更新时间:2023-11-29 03:17:39 25 4
gpt4 key购买 nike

在我的 android 项目中,我从手机中的图像加载位图。然后我对其进行各种图像处理,如裁剪、调整大小、编辑像素值。

但问题是位图的格式不是 ARGB_8888,所以它并没有真正存储 alpha 值。或者更确切地说,它始终将它们保持在 255。

如何加载 ARGB_8888 格式的位图?这是我加载和调整大小的代码。我如何指定其中任何一个的格式?

谢谢

private static Bitmap resize(Bitmap img, int newW, int newH) throws IOException {
Bitmap resizedImg = Bitmap.createScaledBitmap(img, newW, newH, false);
img.recycle();

Bitmap newresizedImg = resizedImg.copy(Bitmap.Config.ARGB_8888, true);
resizedImg.recycle();


Pixel initialPixel = Function.getPixel(0, 0, newresizedImg, null);
int a = initialPixel.getColor().getAlpha(); // -> 255
newresizedImg.setPixel(0, 0, Pixel.getTransparentColor().getRGB());
initialPixel = Function.getPixel(0, 0, newresizedImg, null);
int new_a = initialPixel.getColor().getAlpha(); // -> 255

return newresizedImg;
}

private static Bitmap getImage(String from) throws IOException {
File file = new File(from);

if (file.exists()) {
BitmapFactory.Options op = new BitmapFactory.Options();
op.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bufferedImage = BitmapFactory.decodeFile(from, op);
return bufferedImage;
}
return null;
}

像素类

public static Color getTransparentColor() {
return new Color(0, 0, 0, 0);
}

颜色类

public int getRGB() {
return ((A << 24) | 0xFF) + ((R << 16) | 0xFF) + ((G << 8) | 0xFF) + (B | 0xFF);
}

最佳答案

您可以使用这种类型的函数复制您的位图(或者您知道,不使用函数取决于您想要如何使用它)

private Bitmap ARGBBitmap(Bitmap img) {
return img.copy(Bitmap.Config.ARGB_8888,true);
}

关于java - 如何在android中将位图设置为ARGB_8888?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25576869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com