图片质量压缩,尺寸不变,不需要用到磁盘
来源:互联网 发布:网络歌手陈柯 编辑:程序博客网 时间:2024/06/16 12:52
项目遇到一个很刁钻的问题,系统有个上传图片的功能,但是为了节省带宽,必须限制用户输入图片的大小,为了用户的体验,用户上传任意一张图片都要被允许,并且不能使用磁盘。这个刁钻的问题解决方法只有在用户上传图片的时候,如果图片大小超过一定的时候就自行质量压缩,尺寸维持不变,代码如下,完美解决问题
/*** @Title: compressPic * @Description: 压缩图片,通过压缩图片质量,保持原图大小* @param quality:0-1 * @return byte[] * @throws*/public static byte[] compressPic(byte[] imageByte,float quality) {byte[] inByte = null;try {ByteArrayInputStream byteInput = new ByteArrayInputStream(imageByte);Image img = ImageIO.read(byteInput);float newWidth = img.getWidth(null);float newHeight = img.getHeight(null);Image image = img.getScaledInstance((int) newWidth,(int) newHeight, Image.SCALE_SMOOTH);// 缩放图像BufferedImage tag = new BufferedImage((int) newWidth,(int) newHeight, BufferedImage.TYPE_INT_RGB);Graphics2D g = tag.createGraphics();g.drawImage(image, 0, 0, null); // 绘制缩小后的图g.dispose();ByteArrayOutputStream out = new ByteArrayOutputStream(imageByte.length);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam jep=JPEGCodec.getDefaultJPEGEncodeParam(tag); /* 压缩质量 */ jep.setQuality(quality, true); encoder.encode(tag, jep); inByte = out.toByteArray();out.close(); } catch (IOException ex) {ex.printStackTrace();}return inByte;}
下面是安卓端的方式
public static byte[] compressImage(Bitmap image,int size,int options) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 image.compress(Bitmap.CompressFormat.JPEG, 80, baos); return baos.toByteArray(); }
阅读全文
0 0
- 图片质量压缩,尺寸不变,不需要用到磁盘
- 图片按尺寸和质量压缩
- Android图片压缩尺寸和质量
- Android图片压缩,先进行尺寸压缩,再质量压缩
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- [Android]Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Android图片压缩(质量压缩和尺寸压缩)
- Python-多线程
- 将Office(如:Word、Excel、PPT 等)文件转PDF(通过OpenOffice实现)
- js浮点数运算保留两位小数点
- 浅谈对于前端库的理解
- 转载!javascript3种检测变量类型的方法
- 图片质量压缩,尺寸不变,不需要用到磁盘
- Hdu 2896 病毒侵袭 AC自动机
- Centos7中安装Redis3.2.3集群
- Windows下Redis的安装使用
- hadoop伪分布式安装
- Android QQ小红点的实现(附完整注释)
- Azure Ubuntu 16.04 LTS 远程桌面
- cookie值中包含等号、空格、分号等特殊字符的处理
- (6/19)MySQL数据库==复习