压缩图片上传到阿里云(解决图片变红)
来源:互联网 发布:ug怎么编程钻孔 编辑:程序博客网 时间:2024/06/04 18:01
前言: 以往文章说了如何上传图片到OSS,这次因为需求,需要将图片进行压缩上传,提高上传速度.
1.我这里没有使用Thumbnails 来压缩图片,因为我发现如果是传入PNG图片,然后转成jpg的时候回出现图片变红,所以我放弃了这种做法,(但是都说这种效率高,)
2.我直接采用的是java自带的BufferedImage+ImageIO来完成压缩,什么都不说了,只上传压缩代码,如果有同学想获取完整版的上传图片到OSS并压缩的,那么结合我以前发的文章
3.参考网站:
图片变红如何解决? http://bbs.csdn.net/topics/392038869
PNG转成JPG背景颜色改变的问题! http://blog.csdn.net/xujie3/article/details/51848831
上传图片到OSS并压缩! (我使用他这种会变色) http://blog.csdn.net/a3215q/article/details/71126869
public String uploadImg2Oss(MultipartFile file) throws ImgException {if (file.getSize() > 10 * 1024 * 1024) {throw new ImgException("上传图片大小不能超过10M!");}String originalFilename = file.getOriginalFilename();String substring = originalFilename.substring(originalFilename.lastIndexOf(".")+1).toLowerCase();Random random = new Random();String name = random.nextInt(10000) + System.currentTimeMillis() +"."+substring;try {InputStream inputStream = file.getInputStream();// 把图片读入到内存中BufferedImage bufImg = ImageIO.read(inputStream);// 压缩代码// 存储图片文件byte数组ByteArrayOutputStream bos = new ByteArrayOutputStream();//防止图片变红BufferedImage newBufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB); newBufferedImage.createGraphics().drawImage(bufImg, 0, 0, Color.WHITE, null);//先转成jpg格式来压缩,然后在通过OSS来修改成源文件本来的后缀格式 ImageIO.write(newBufferedImage,"jpg",bos); //获取输出流inputStream = new ByteArrayInputStream(bos.toByteArray());//上传OSSthis.uploadFile2OSS(inputStream, name);return name;} catch (Exception e) {throw new ImgException("图片上传失败");}}
PS:
1.注意tomcat是默认上传图片不能大于2M,但是我测试,发现有时候是这样,但是有时候不是这样,(有同学能发现的,告诉我下,谢谢了)
2.如何利用Thumbnails 来压缩图片并且不会变红,(有同学能发现解决方法,希望能告诉我下)
阅读全文
0 0
- 压缩图片上传到阿里云(解决图片变红)
- java 上传图片图片变红
- 上传图片到阿里云
- JAVA迅速解决图片变红、变黑、压缩平滑问题
- 安卓上传图片到阿里云
- java上传图片到阿里云
- ajaxFileupload上传图片到阿里云
- 图片批量上传到阿里云服务器
- java实现上传图片上传到阿里云
- PHP调用接口到阿里云OSS同步上传图片
- [微信小程序]上传图片到阿里云OSS
- iOS 阿里云上传图片
- 阿里云OSS上传图片,图片处理
- Android图片压缩并上传到服务器
- 图片压缩上传 上传 压缩
- 上传图片到 OSS 带压缩图片代码
- 上传图片到服务器 对图片进行压缩
- ssm上传图片文件到ftp(图片压缩处理)
- Sql中EXISTS与IN的效率问题
- 大数据风控案例(总结他人)
- 11.22第十五课
- redis持久化
- (十七)dubbo
- 压缩图片上传到阿里云(解决图片变红)
- Oracle 中 call 和 exec的区别
- 数据库查询错误
- 最简单的ImageLoader缓存
- MAC上nginx启动但是浏览器访问不了项目问题
- Java并发
- 常用 Git 命令清单
- LeetCode第三题的一个O(n)方法
- 从2017工博会看RobotArt离线编程