文档章节

图片压缩的具体实现

佳哥V587
 佳哥V587
发布于 2016/12/06 18:59
字数 211
阅读 4
收藏 0
点赞 0
评论 0
public static String resizeImages(InputStream inputStream, String realPath) {
		
		OutputStream out = null;
		
		try {
			//1.构造原始图片对应的Image对象
			BufferedImage sourceImage = ImageIO.read(inputStream);

			//2.获取原始图片的宽高值
			int sourceWidth = sourceImage.getWidth();
			int sourceHeight = sourceImage.getHeight();
			
			//3.计算目标图片的宽高值
			int targetWidth = sourceWidth;
			int targetHeight = sourceHeight;
			
			if(sourceWidth > 100) {
				//按比例压缩目标图片的尺寸
				targetWidth = 100;
				targetHeight = sourceHeight/(sourceWidth/100);
				
			}
			
			//4.创建压缩后的目标图片对应的Image对象
			BufferedImage targetImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
			
			//5.绘制目标图片
			targetImage.getGraphics().drawImage(sourceImage, 0, 0, targetWidth, targetHeight, null);
			
			//6.构造目标图片文件名
			String targetFileName = System.nanoTime() + ".jpg";
			
			//7.创建目标图片对应的输出流
			out = new FileOutputStream(realPath+"/"+targetFileName);
			
			//8.获取JPEG图片编码器
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			
			//9.JPEG编码
			encoder.encode(targetImage);
			
			//10.返回文件名
			return "surveyLogos/"+targetFileName;
			
		} catch (Exception e) {
			
			return null;
		} finally {
			//10.关闭流
			if(out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			
		}
	}

 

本文转载自:

共有 人打赏支持
佳哥V587
粉丝 0
博文 9
码字总数 667
作品 0
程序员
Android学习-使用Async-Http实现图片压缩并上传功能

Android学习-使用Async-Http实现图片压缩并上传功能 前言 (转载请注明出处,谢谢!) 最近在做一个小项目,项目中要实现上传图片到服务器,而这个例子是实现图片的尺寸压缩,将获取到的压缩图...

Ryane ⋅ 2016/06/14 ⋅ 0

Android平台上图片/视频选择,编辑和压缩的一站式解决方案

Phoenix 功能介绍 项目地址:github.com/guoxiaoxing… Jitpack version License Android平台上图片/视频选择,编辑和压缩的一站式解决方案。 图片/视频的选择,编辑和压缩是业务中的常见需求...

郭孝星 ⋅ 2017/10/23 ⋅ 0

Android 图片压缩工具--Luban(鲁班)

Luban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略。 项目描述 目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进...

匿名 ⋅ 2016/08/09 ⋅ 5

PNG尺寸缩小实战

为了节省资源,我们希望在不同分辨率的前端上可以获取到不同尺寸的素材资源。由于最近的业务中使用的所有素材都是PNG格式的图片,并且对图片效果要求比较严格,并没有在市面上找到可以直接使...

EchoZhou ⋅ 2017/11/29 ⋅ 0

大众点评Cat源码分析(二)——MessageTree从服务端接收到写入磁盘逻辑序列

一、MessageTree写入磁盘逻辑序列图 二、MessageTree写入逻辑步骤 MessageTree被Period分发到不同的PeriodTask 不同的PeriodTask调用对应的Analyzer处理MessageTree,上面的序列图,是以Dum...

liangxiao ⋅ 2017/11/28 ⋅ 0

Canvas与图片压缩

之前写过一篇有关Canvas图片处理的文章,今天我们讲讲如何使用Canvas来压缩图片。 Canvas图片压缩流程 接下来我将以具体实例为大家讲解Canvas图片压缩的具体流程。 一、本地图片输入 1. 获取...

璿而不华 ⋅ 2017/11/27 ⋅ 0

Android平台图像压缩方案

关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流。 文章目录 一 质...

郭孝星 ⋅ 2017/11/27 ⋅ 0

iOS 图片压缩UIImage方法扩展

iOS自带的提供了一个API如下 snippetid="1700579" snippetfilename="blog201702121_5945315" name="code" class="objc">NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compres......

chen_gp_x ⋅ 2016/03/09 ⋅ 0

机器学习Tensorflow笔记2:超详细剖析MNIST实验

上一篇文章我们描述了MNIST实验的过程,但是我们做完实验之后,并没有学到什么太大的东西,只知道Tensorflow的具体使用而已,所以本文讲解这个实验的具体内容,详细剖析MNIST实验,如果先看本...

ImWiki ⋅ 05/12 ⋅ 0

基于JFinal的资源文件Handler HttpCacheHandler

上一篇文章讲到了对js,css的压缩的ComboHandler。 对其更新到BAE并没有达到自己想要的效果,每次HTTP请求需要耗时2~5s。 加上了BAE的cdn也丝毫没有改善,尝试对url添加.js,.css等会报404...

如梦技术 ⋅ 2013/07/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部