android - 在发送到服务器之前调整图像大小

标签 android image bitmap network-programming

我的设备上有一张非常大的图像(不是用设备相机拍摄的)我需要在将图像发送到服务器之前调整图像大小。所以说它原来是 14mb,我想把它减少到 2mb。我想在不损失质量的情况下调整图像的大小。我的意思是服务器将允许放大照片。所以我认为密度很重要。除了我不明白 inDensity 在这方面是如何运作的。有人能解释一下我如何将照片大小调整为 2mb 但保持如此高的密度以使图像可以高质量缩放吗?或者这是不可能的。

我已经知道如何调整图片大小了:

public static Bitmap resizeImage(String file, int reqHeight, int reqWidth) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(file, options);

    options.inSampleSize = calculateInSampleSize(options, reqHeight, reqWidth);
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeFile(file, options);
}

最佳答案

在你的代码中试试这个:

Bitmap bmp = BitmapFactory.decodeFile(myImage)
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bmp.compress(CompressFormat.JPEG, 70, bos);

InputStream in = new ByteArrayInputStream(bos.toByteArray());

ContentBody image = new InputStreamBody(in, "image/jpeg", "filename");

它对我有用!

关于android - 在发送到服务器之前调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36875663/

相关文章:

ios - 从 iPhone 相机 (AVCaptureSession) 捕获 24 bpp 位图中的图像

r - 如何在 R 中基于离屏(位图)图形创建 "interactive"图形设备?

java - 我如何在触摸时启动动画,该动画将在到达 Sprite 表末尾后停止?

android - 使用带有 Appcompat 主题的扩展 float 操作按钮

android - "android.view.View cannot be cast to android.view.ViewGroup"异常

c# - 从 C# 中的一系列图像生成视频

java - 将灰度图像读入一维数组

android - 即使在添加 addToBackStack 和 executePendingTransactions() 之后 getBackStackEntryCount() 也总是返回 0

image - 将像素排序为中值过滤器

C# OpenTK - 纹理四边形