/**

*

* 直接指定压缩后的宽高:

* @param oldFile

* 要进行压缩的文件

* @param width

* 压缩后的宽度

* @param height

* 压缩后的高度

* @return 返回压缩后的文件的全路径

*/

public static File zipImageFile(File oldFile, int width, int height) {

if (oldFile == null) {

return null;

}

File newImage = null;

try {

/** 对服务器上的临时文件进行处理 */

Image srcFile = ImageIO.read(oldFile);

/** 宽,高设定 */

BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);

tag.getGraphics().drawImage(srcFile, 0, 0, width, height, null);

/** 压缩后的文件名 可以再自定义 */

newImage = oldFile;

/** 压缩之后临时存放位置 */

FileOutputStream out = new FileOutputStream(newImage);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);

/** 压缩质量 */

jep.setQuality(90, true);

encoder.encode(tag, jep);

out.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return newImage;

}

/**

* 方法描述 上传图片

*/

public void uploadImage() {

long beginTime = System.currentTimeMillis();

HttpServletResponse response = ServletActionContext.getResponse();

try {

response.setContentType("text/html;charset=UTF-8");

response.setCharacterEncoding("utf-8");

ResultMsg msg = new ResultMsg();

FileInputStream fis = null;

OutputStream outputStream = null;

try {

String tempPath = "/upload/wechatshake/"+ getUserInfoSession().getAccount()+ "/";

// 生成上传文件

String path = ServletActionContext.getServletContext().getRealPath(tempPath)+"/";

File dir = new File(path);

if (!dir.exists()) {// 判断目录是否存在,否则创建

dir.mkdirs();

}

File file = ImageUtil.zipImageFile(getImage(),140,140); //压缩图片

if (file != null) {

Random random = new Random();

String saveUploadFileName = "upload"

+ System.currentTimeMillis()+ random.nextInt(1000)

+ imageFileName.substring(imageFileName.lastIndexOf("."),imageFileName.length());

fis = new FileInputStream(file);

outputStream = new FileOutputStream(new File(path,saveUploadFileName));

//byte[] buffer = new byte[1024];

int len = 0;

while ((len=fis.read())!=-1) {

outputStream.write(len);

}

//将图片上传到微信端

UserInfoWechat userInfoWechat = iUserInfoWechatServic.getByUser(getUserInfoSession().getId());

String token = iWeixinService.getAccessToken(userInfoWechat);

Material material = new Material();

material.setType("icon");

material.setMedia(tempPath+saveUploadFileName);

material = iWxActivityService.uploadMaterial(material, token);

logger.info("上传图片微信接口返回数据:"+material);

if(null != material){

List list = new ArrayList();

list.add(material.getData().getPic_url());

msg.setDataList(list);

msg.setCode("0");

}else {

msg.setCode("1");

msg.setDesc("发布失败");

}

msg.setDesc(SUCCESS);

}

} catch (Exception e) {

error("上传文件失败", e);

msg.setCode("1");

msg.setDesc(ERROR);

} finally {

try {

if(fis!=null){fis.close();}

if(outputStream!=null){outputStream.close();}

} catch (IOException e) {

e.printStackTrace();

}

writeResult(msg);

}

} catch (Exception e) {

error("上传文件失败", e);

} finally {

printTime(beginTime, getClass(), "uploadImage");

}

}

java压缩源代码_压缩图片大小(Java源码)相关推荐

  1. java testng 源代码_根据测试用例的java源码自动生成TestNG的XML文件

    1.读取当前项目目录下的所有.java文件,过滤出含有@Test标识的java源文件 2.读取java文件内容,解析出包名.类名.方法名.使用Vector存储,第一个元素为包名,第二个元素为类名,从第 ...

  2. 我的世界java刷怪数量_我的世界Minecraft源码分析(1):刷怪逻辑

    这个系列通过对我的世界Minecraft源码进行拆分讲解,让大家可以清除的了解一款游戏是怎么一步步被实现出来的,下面就介绍Minecraft源码第一篇内容,关于刷怪逻辑. 生成循环 生物大致划分为四种 ...

  3. 别踩白块java程序代码_别踩白块源码

    [实例简介] 经典游戏别踩白块源码,自己DIY 嘚瑟一下自己的小伙伴吧 ! [实例截图] [核心代码] OGEngine_bcbkym └── OGEngineDeom_block ├── Andro ...

  4. python美女源代码_随机美女写真网页源码+python源程序

    释放双眼,带上耳机,听听看~! 源码介绍 美图网站千千万,美图自己说了算!本源码由@香谢枫林 开发,首页图片做了浏览器窗口自适应,最大化占满PC浏览器和移动浏览器的窗口,并且防止出现滚动条. 功能介绍 ...

  5. 计算机毕业设计java+ssm理论课_考勤,作业,签到管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 本理论课管理系统采用目前最流行的ssm框架和eclipse编辑器.mysql数据库设计并实现的 .主要包括登录模块.课程信息管理模块.考勤信息管理模块.成绩管理模块.和退出模块等多个模块 本 ...

  6. java财务管理源代码_java 个人财务管理系统 入门级源码

    [实例简介]管理日常支出 [实例截图] [核心代码] @RequestMapping(value = "/recordselectBydate") public String se ...

  7. linux批量修改压缩图片大小,linux shell批量压缩某个目录下图片大小

    linux shell批量压缩某个目录下图片大小 #!/bin/sh read -p "Input Path:" SPATH maxsize=$((1024*200)) FILEL ...

  8. delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

    多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...

  9. java wms erp自动化立体仓库管理系统 进出库 源码 源代码 程序

    java wms erp自动化立体仓库管理系统 进出库 源码 源代码 程序 wms是基于自动化输送线.机械臂.点数机.提升机.堆垛机等自动化设备和现代化仓储精益管理思想开发出来的仓库管理系统. 通过对 ...

最新文章

  1. 十六、爬虫实战,多线程抓取毛豆新车的数据
  2. 中缀表达式计算、后缀表达式计算、中缀转后缀
  3. Python中的高阶变量
  4. 使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署
  5. iOS(iPhone/iPad)开发新手必读
  6. db2数据库连接数 linux_DB2 数据库 linux基本操作【转】
  7. 遥感图像的辐射畸变与辐射校正
  8. WAMP5配置本地服务器(超级详细教程)
  9. 泛泰A870L/K/S第三版官方4.4.2原来的系统卡刷机包 (愿自己主动ROOT)
  10. 计算机技术与软件专业技术资格(水平)考试指南
  11. 鸿蒙时期人物排行榜,《永生》之战力排行榜,那些经典角色你还记得吗
  12. VC++启动浏览器打开指定网页 (转)
  13. 开源python语音识别_5 款不错的开源语音识别/语音文字转换系统
  14. 曲阜水利学校计算机96级聚会,曲阜水利学校50年校庆
  15. APP项目开发-需求分析
  16. 一次Linux中的木马病毒解决经历
  17. 2022ICPC杭州 F. Da Mi Lao Shi Ai Kan De codeforces gym 104090F
  18. win11英文版安装中文输入法中文语言包切换到中文版
  19. 群辉NAS信息提醒大师
  20. 计算机应用稿件改后重审,论文投稿,外审意见是修后再审,修后再审过后,编辑告诉我要再修改然后再审,返回来的稿件是我修后的原稿,这是什么情况。求知道的专家同仁指点迷津...

热门文章

  1. 思考方法,程序员生存之道
  2. 两分钟了解数据封装和解封
  3. Flink任务链Operator Chains
  4. Devign: Effective Vulnerability Identification byLearning Comprehensive Program Semantics viaGraph
  5. 遍历操作__getitem__
  6. mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...
  7. 股票价格预测 | Python实现LSTM股票价格时间序列预测
  8. css显示苹方字体,苹方字体合集
  9. Metal 框架之自定义设置渲染通道
  10. TensorRT报错的一百种姿势 | 【❤️TensorRT抱错砖家❤️】