2017-02-23 65 views
0

问题是...假设我有非常好的质量camera.It返回高分辨率的图片。但我想上传该图片到服务器。所以如果图像尺寸很大,我想降低图像质量。任何帮助?感谢提前。如何降低摄像头在Android中拍摄的图片质量

+0

可能的复制[如何保存Android上具有自定义质量级别的JPEG图像](http://stackoverflow.com/questions/4579647/how-to-save-a-jpeg-image-on-android-with-a-custom-quality-level) –

回答

1

是的,你可以使用Bitmap.compress()来做到这一点,你需要做的就是指定压缩格式,质量和输出格式。 请参阅以下链接 “https://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat,int,java.io.OutputStream)”。

让我知道它是否可以帮助你!

+0

这很好。但我认为这将需要一段时间的应用程序会更慢。是否有蚂蚁的方式来实际改变相机设置,这将使我的尺寸(以Kb为单位)的图像输出? –

+0

如果发现位图保存速度较慢,请尝试以下操作: 尝试使用JPEG格式并仅在绝对必要时使用PNG。使用bitmap.compress'(Bitmap.CompressFormat.JPEG,100,out);' 如果你正在创建位图并且你不关心透明度,那么使用'Bitmap.Config.RGB_565'而不是'Bitmap.Config .ARGB_8888'。 使用位图位图= Bitmap.createBitmap(宽度,高度,Bitmap.Config.RGB_565);' –

1

如果编写Android的代码,我建议你设置你所需要的图像质量和存储/转码为JPEG

这是一个问题的相反的问题 - 这应该给你你需要什么?:How to compress Bitmap as JPEG with least quality loss on Android?

+1

谢谢但我想android代码。不适用。其实我已经编写了相机代码并上传图片,但是我想在上传之前减小图片大小(以kb为单位)。 –

+1

@ArnabKundu我改变了我的答案 - 并建议这可能是另一个问题的重复......如何在Android中存储具有x%质量的JPEG。 HTH –

+0

感谢您的帮助。我会检查的。 –

1

我认为这是您的图片格式的问题上传图片通常* .raw的尺寸最大。你应该尝试上传JPG/PNG图像。当保存图像时,只需使用Filename.jpg作为文件名,图像将被保存。准备上传。您可以在文件上传后删除该文件。直到媒体商店探针{服务}得到更新后,更改将不会反映到您的画廊。您可以使用此https://github.com/googlesamples/android-Camera2Basic作为参考来构建应用程序

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 

Wikipedia

对于最高质量的图像(Q = 100),每个颜色像素需要大约8.25位

因此,对于Q=100200x200图像,这将导致(200 * 200) px * 8.25 bits/px = 330000 bits = ~ 41 kB这肯定是小于64KB

你可以尝试其他尺寸太..只是改变了maxSize参数

相关问题