gpt4 book ai didi

android - 下采样后图像看起来模糊

转载 作者:行者123 更新时间:2023-11-30 02:27:33 25 4
gpt4 key购买 nike

我正在开发一个具有缩放功能的小项目,但是当我缩小图像时,它的质量会降低以保持其原始质量缩小比例需要很多时间我需要快速缩小比例请帮助我更正我的代码。提前致谢..

Bitmap downscaleBitmap_new(Bitmap src,int targetWidth, int targetHeight, int off)
{
float r = (src.getWidth()-off)/(float)targetWidth;
float s = (src.getHeight()-off)/(float)targetHeight;
Bitmap target = Bitmap.createBitmap(Math.round(src.getWidth()/r), Math.round(src.getHeight()/s), Config.ARGB_8888);
r = src.getWidth()/(float)target.getWidth();
s = src.getHeight()/(float)target.getHeight();
int argb;
int red;
int green;
int blue;
int alpha;
float wx;
float wy;
float n;
for(int i=0;i<target.getWidth();++i){
for(int j=0;j<target.getHeight();++j){
red = 0;
green = 0;
blue = 0;
alpha = 0;
n=0;
for(int k =(int)(i*r);k<Math.round((i+1)*r);++k){
if(k<i*r){
wx = k-i*r+1;
}else{
if(k+1>(i+1)*r)
wx = (i+1)*r-k;
else
wx = 1;
}
for(int l=(int)(j*s);l<Math.round((j+1)*s);++l){
if(l<j*s){
wy = l-j*s+1;
}else{
if(l+1>(j+1)*s)
wy = (j+1)*s-l;
else
wy = 1;
}
n+=wy*wx;
argb=src.getPixel(k, l);
red += wx*wy*Color.red(argb);
green += wx*wy*Color.green(argb);
blue += wx*wy*Color.blue(argb);
alpha += wx*wy*Color.alpha(argb);

}
}
target.setPixel(i, j, Color.argb((int)(alpha/n), (int)(red/n), (int)(green/n), (int)(blue/n)));
}
}
return target;
}

最佳答案

为什么您认为缩小图像不会改变其质量?由于插值,您将获得较差的质量。没有办法保持图像的质量。您可以使用三次或双线性插值而不是线性插值以获得更好的输出。

Bitmap.createScaledBitmap(src, new_width, new_height, true);

这将使用双线性过滤器,你会得到很好的结果。如果你想要更好的性能,你可能想要检查 renderscript 并实现更好的算法。您也可以使用第 3 方库,例如 OpenCV 或其他图像处理库,但这对应用程序来说会非常繁重。

关于android - 下采样后图像看起来模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27737368/

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