如何降低Android系统中相机拍摄的照片质量

如何降低Android系统中相机拍摄的照片质量,android,Android,问题是。。。假设我有一个质量很好的相机,它能返回高分辨率的图片,但我想把那个图片上传到服务器上。因此,如果图像尺寸很大,我想降低图像质量。有什么帮助吗?感谢您的帮助。是的,您可以使用Bitmap.compress()执行此操作,只需指定压缩格式、质量和输出格式。 请参阅以下链接 “,int,java.io.OutputStream)” 如果对你有帮助,请告诉我 如果编写Android代码,我建议您设置所需的图像质量,并将其存储/转换为JPEG格式 这是对相反问题的回答-哪一个应该给你你所需要的?

问题是。。。假设我有一个质量很好的相机,它能返回高分辨率的图片,但我想把那个图片上传到服务器上。因此,如果图像尺寸很大,我想降低图像质量。有什么帮助吗?感谢您的帮助。

是的,您可以使用
Bitmap.compress()
执行此操作,只需指定压缩格式、质量和输出格式。 请参阅以下链接 “,int,java.io.OutputStream)”


如果对你有帮助,请告诉我

如果编写Android代码,我建议您设置所需的图像质量,并将其存储/转换为JPEG格式


这是对相反问题的回答-哪一个应该给你你所需要的?:

我认为这是你的可上传图像的图像格式的问题通常*。raw的大小最大。您应该尝试上传jpg/png图像。保存图像时,只需使用Filename.jpg作为文件名,图像将被保存。准备上载。上传后,您可以删除该文件。在媒体商店probe{service}更新之前,更改不会反映到您的多媒体资料中。您可以将其用作构建应用程序的参考

尝试以下操作:以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位/px=330000位=~41 kB
,这肯定小于
64KB


你也可以尝试其他维度。。只需更改
maxSize
参数

谢谢,但我想要android代码。不是应用程序。实际上,我已经为相机和上传图像编写了代码,但我想在上传之前减小图像大小(kb)。@ArnabKundu我已经更改了我的答案-并建议这可能是另一个问题的重复。。。如何在Android中存储质量为x%的JPEG。谢谢你的帮助。我会检查一下。虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@MaksimSimkin当然可以,但我认为它实际上是那个问题的复制品,或者是我标记为重复的那个问题。。。我想最好把它当作一个复制品来接受。可能的复制品是好的。但我认为这需要一些时间。应用程序会变慢。是否有一种实用的方法来更改相机设置,从而使我可以输出小尺寸(以Kb为单位)的图像?如果您发现位图的保存速度较慢,请尝试以下方法:尝试使用JPEG格式,仅在绝对必要时使用PNG。使用bitmap.compress
(bitmap.CompressFormat.JPEG,100,out)
如果您正在创建位图而不关心透明度,则使用
bitmap.Config.RGB_565
而不是
bitmap.Config.ARGB_8888
。使用
Bitmap Bitmap=Bitmap.createBitmap(宽度、高度、Bitmap.Config.RGB_565)