【发布时间】:2017-07-14 02:23:33
【问题描述】:
问题是......假设我有质量非常好的相机。它返回高分辨率图片。但我想将该图像上传到服务器。因此,如果图像尺寸很大,我想降低图像质量。有帮助吗?提前谢谢。
【问题讨论】:
标签: android
问题是......假设我有质量非常好的相机。它返回高分辨率图片。但我想将该图像上传到服务器。因此,如果图像尺寸很大,我想降低图像质量。有帮助吗?提前谢谢。
【问题讨论】:
标签: android
试试这个:以 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 位
因此,对于200x200 图像上的Q=100,这将导致(200 * 200) px * 8.25 bits/px = 330000 bits = ~ 41 kB 肯定小于64KB
您也可以尝试其他维度。只需更改maxSize 参数
【讨论】:
我认为这是您的可上传图片的图片格式的问题,通常 *.raw 的尺寸最大。您应该尝试上传 jpg/png 图像。保存图片时,只需使用 Filename.jpg 作为文件名,图片将被保存。准备上传。上传后您可以删除文件。在 媒体商店 探测{ service } 更新之前,这些更改不会反映到您的图库中。您可以使用此 https://github.com/googlesamples/android-Camera2Basic 作为参考来构建您的应用程序
【讨论】:
如果编写 Android 代码,我建议您设置所需的图像质量并将存储/转码为 JPEG
这是对相反问题的答案 - 应该可以满足您的需求?:How to compress Bitmap as JPEG with least quality loss on Android?
【讨论】:
是的,你可以使用Bitmap.compress()来做,你需要做的就是指定压缩格式、质量和输出格式。
参考以下链接
“https://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream)”。
如果对你有帮助,请告诉我!!
【讨论】:
(Bitmap.CompressFormat.JPEG, 100, out); 如果您正在创建位图并且不关心透明度,请使用 Bitmap.Config.RGB_565 而不是 Bitmap.Config.ARGB_8888。使用Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);