Android中压缩图片指定大小

我就是这样压缩的得到的结果比原来的更大求解释... 我就是这样压缩的 得到的结果比原来的更大 求解释 展开
 我来答
wei_92130
2014-09-18 · TA获得超过107个赞
知道答主
回答量:29
采纳率:0%
帮助的人:17.3万
展开全部
注意看这句话,bit.compress(CompressFormat.PNG, 100, baos);
那里的数字表示 如果不压缩是100,表示压缩率为0。
如果是70,就表示压缩率是70,表示压缩30%;
所以你的倒数第二句话表示没有压缩。

以下是我压缩的方法,望采纳。

/**
* 图像压缩并保存到本地
* 返回处理过的图片
*
*/
private Bitmap
saveImage(String fileName,Bitmap bit) {

File file = new
File(fileName);
if (!file.exists()) {
try
{
file.createNewFile();
} catch (IOException e)
{
e.printStackTrace();
}
}
try
{
ByteArrayOutputStream stream = new
ByteArrayOutputStream();
bit.compress(CompressFormat.JPEG, 70,
stream);
// 70 是压缩率,表示压缩30%; 如果不压缩是100,表示压缩率为0
FileOutputStream os =
new
FileOutputStream(file);
os.write(stream.toByteArray());
os.close();
return
bit;
} catch (Exception e) {
file = null;
return
null;
}
}
追问
我是想压缩成固定的大小就比如说740*480这样的 那我前面那些操作算什么
追答

这句话是传入要操作的图片和指定的大小;

这两句是获取到图片原有的大小,宽和高;

这几句是计算缩小或者放大的比例。用那个new的宽高和原有图片的相比较,计算出比例,一会好操作。另外这里有个点,如果图片宽比高长就正常比较,否则就倒过来。意思是让这张图片保持是横着的图,就是宽比较长。

这两句话是定义一个操作图片的对象,这个对象主要是用来按照刚才计算的比例来缩放图片。这里定义的是对宽和高缩放的比例。

这句是重新生成一张图片,从原始位图剪切图像,这是一种高级的方式。可以用Matrix(矩阵)来实现旋转等高级方式截图
参数说明:
  Bitmap source:要从中截图的原始位图
  int x:起始x坐标
  int y:起始y坐标
       int width:要截的图的宽度
       int height:要截的图的宽度
       boolean filter:一个枚举类型的配置,可以定义截到的新位图的质量。当进行的不只是平移变换时,filter参数为true可以进行滤波处理,有助于改善新图像质量;flase时,计算机不做过滤处理。

     返回值:返回一个剪切好的Bitmap

这句就是上边提到的压缩了。

最后返回字节流。。。

 

 

 

大哥啊,我纯手打的,,,,,,,,快采纳吧。。。。。。。。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式