导航:首页 > 文件处理 > android大图压缩

android大图压缩

发布时间:2024-08-26 11:25:58

android 缩放和压缩的区别

android 缩放和压缩图片可以如下解释:

压缩图片
这里简单的将一个图片文件转换为 Bitmap ,并且在转换的过程中对图片质量进行简单压缩:
bitmap.compress(Bitmap.CompressFormat.JPEG, int quality, FileOutputStream fos);

注意这里的 quality 的范围为 0~100 ,经过测试如果这个值设置比较低的话图片会非常不清晰, 基本不可用, 0~100 的值可以参考类似Photoshop之类输出图片时选择的图片质量.
此方法只是单纯对图片质量进行处理, 并不会改变其大小, 如果需要改变图片文件的大小, 最好是使用缩放, 这个可以在保证一定的图片清晰度的情况下减少了图片大小, 毕竟手机屏幕就那么点, 你把 2000px * 1000px 的图片改为 500px * 250px 在手机用户看来也不会有太严重的不适感, 而如果你只设置图片的 quality 想来改变文件大小, 你最后会发现得到的是一个 2000px * 1000px 的几个色块.
缩放图片
先提代码看看:

[java] view plain
/**
* 保持长宽比缩小Bitmap
*
* @param bitmap
* @param maxWidth
* @param maxHeight
* @return
*/
public Bitmap resizeBitmap(Bitmap bitmap, int maxWidth, int maxHeight) {

int originWidth = bitmap.getWidth();
int originHeight = bitmap.getHeight();

// no need to resize
if (originWidth < maxWidth && originHeight < maxHeight) {
return bitmap;
}

int width = originWidth;
int height = originHeight;

// 若图片过宽, 则保持长宽比缩放图片
if (originWidth > maxWidth) {
width = maxWidth;

double i = originWidth * 1.0 / maxWidth;
height = (int) Math.floor(originHeight / i);

bitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
}

// 若图片过长, 则从上端截取
if (height > maxHeight) {
height = maxHeight;
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
}

// Log.i(TAG, width + " width");
// Log.i(TAG, height + " height");

return bitmap;
}

这里演示是将图片缩小到一个max范围内, 而不是直接将变成硬性的变成某个尺寸的图片, 因为一般来说这种设置max的方式符合大部分需要, 如果必须将图片变成某个指定尺寸可以直接使用 Bitmap.createScaledBitmap 方法, 也是下面要介绍的.
此函数主要就是使用了 Bitmap 的两个静态方法, 一个是:
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)

此方法就会把一个 Bitmap 图片 缩放 成指定的尺寸.

⑵ Android中压缩图片指定大小

注意看这句话,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;
}
}

阅读全文

与android大图压缩相关的资料

热点内容
如何用电脑设置校时服务器 浏览:558
安卓什么软件可以换铃声 浏览:562
如何解决解压馆的劣势 浏览:320
plc编程模块化 浏览:245
单片机寄存器地址 浏览:396
七猫免费小说缓存加密 浏览:29
天津保税仓有溯源码 浏览:332
安卓9开发版什么时候推送 浏览:61
程序员可以天天加班吗 浏览:499
垃圾压缩车品牌 浏览:555
自制搜索引擎pdf 浏览:76
触漫安卓手机怎么登苹果的号 浏览:320
银行app怎么收信用卡的钱 浏览:288
java十进制转十六进制算法 浏览:920
pos刷卡需要app认证怎么弄 浏览:252
快速配IP命令 浏览:829
小程序后台源码导入 浏览:920
苹果手机app上的未读怎么取消 浏览:514
蜻蜓fm导出文件夹 浏览:514
我的世界怎么弄人家的服务器 浏览:361