问题是......假设我的相机质量非常好。它会返回高分辨率的图片。但我想将该图像上传到服务器。所以如果图像尺寸很大,我想降低图像质量。任何帮助?谢谢你的到来。
答案 0 :(得分:1)
是的,您可以使用Bitmap.compress()
来执行此操作,您只需指定压缩格式,质量和输出格式即可。
请参阅以下链接
“https://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat,int,java.io.OutputStream)”。
让我知道它是否对你有所帮助!!
答案 1 :(得分:1)
如果要编写Android代码,我建议您设置所需的图像质量并将其存储/转码为JPEG
这是对相反问题的答案 - 它应该能满足你的需求?:How to compress Bitmap as JPEG with least quality loss on Android?
答案 2 :(得分:1)
我认为这是您的可上传图片的图片格式的问题通常* .raw具有最大尺寸。你应该尝试上传jpg / png图像。保存图像时,只需使用 Filename.jpg 作为文件名,图像将保存.ready上传。您可以在上传文件后删除该文件。在 媒体商店 探测 {service} 更新之前,更改不会反映到您的图库中。您可以使用此https://github.com/googlesamples/android-Camera2Basic作为构建应用的参考
答案 3 :(得分:0)
试试这个:以KB格式获取特定尺寸的图像
/**
* reduces the size of the image
* param image bitmap received from camera
* @param maxSize
* @return
*/
public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
int width = image.getWidth();
int height = image.getHeight();
float bitmapRatio = (float)width / (float) height;
if (bitmapRatio > 0) {
width = maxSize;
height = (int) (width / bitmapRatio);
} else {
height = maxSize;
width = (int) (height * bitmapRatio);
}
return Bitmap.createScaledBitmap(image, width, height, true);
}
使用它像:
Bitmap scaledImage = getResizedBitmap(photo, 200); //here 200 is maxsize
对于最高质量的图像(Q = 100),每个颜色像素需要大约8.25位
因此,对于Q=100
图片上的200x200
,这会导致(200 * 200) px * 8.25 bits/px = 330000 bits = ~ 41 kB
肯定小于64KB
你也可以尝试其他维度..只需更改maxSize
参数