java更改图片格式,,更改图片大小,并实现多线程上传图片。

package com.tongyou.util;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

/**
 * 文件上传工具
 * @version 1.0.0
 * @date 2018/4/2 14:00
 */
public class UploadUtil implements Runnable {

    private static final Logger LOG = LoggerFactory.getLogger(UploadUtil.class);

    private MultipartFile multipartFile;

    /**
     * 根路径
     */
    private String rootPath;

    /**
     * 文件夹全路径
     */
    private String folderPath;

    /**
     * 文件全路径
     */
    private String filePath;

    /**
     * 文件访问地址
     */
    private String fileUrl;

    public UploadUtil(MultipartFile multipartFile, String folderName) {
        this.multipartFile = multipartFile;
        this.rootPath = "V:/XPH/image";
        String realFilename=multipartFile.getOriginalFilename();
        String fileExtension = realFilename.substring(realFilename.lastIndexOf("."));
        String fileName= UUIDUtil.randomUUID() + fileExtension;
        this.folderPath = this.rootPath + folderName;
        this.filePath = folderPath + "/" + fileName;
        String fileUrl = "http://192.168.0.148:80" + folderName + "/" + fileName;
        this.fileUrl = fileUrl.substring(0, fileUrl.lastIndexOf("."));
    }

    private void upload() throws Exception {
        File dirPath = new File(folderPath);
        if (!dirPath.exists()) {
            dirPath.mkdirs();
        }
        File uploadFile = new File(filePath);
        FileCopyUtils.copy(multipartFile.getBytes(), uploadFile);
        //将上传的图片同一存为jpg格式
        this.changJPG(uploadFile);
        //生成缩略图
        this.changSmall(uploadFile);
    }

    private void changJPG(File uploadFile) throws IOException {
        String path = uploadFile.getPath();
        // TODO Auto-generated method stub
         BufferedImage bufferedImage= ImageIO.read(uploadFile);
         // create a blank, RGB, same width and height, and a white background
         BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(),
               bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
        //TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位
         newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null);
         // write to jpeg file
         String fileName = path.substring(0,path.lastIndexOf("."));
         ImageIO.write(newBufferedImage, "jpg", new File(fileName+".jpg"));

    }

    @Override
    public void run() {
        try {
            upload();
        } catch (Exception e) {
            LOG.error("文件上传失败:", e);
        }
    }

    public String getFileUrl() {
        return fileUrl;
    }
    /**
     * 将指定图片在指定 位置生成缩略图
     */
    private void changSmall(File uploadFile){
           String path = uploadFile.getPath();
           try {
               BufferedImage input = ImageIO.read(uploadFile);
               BufferedImage inputbig = new BufferedImage(33, 33, BufferedImage.TYPE_INT_BGR);
               Graphics2D g = (Graphics2D) inputbig.getGraphics();
               g.drawImage(input, 0, 0,33,33,null); //画图
               g.dispose();
               inputbig.flush();
               String fname = path.substring(0, path.lastIndexOf("."));//新名字
               String parent = uploadFile.getParent();
               ImageIO.write(inputbig, "jpg", new File( fname + "_small.jpg")); //将其保存在C:/imageSort/targetPIC/下
           } catch (Exception ex) {
               ex.printStackTrace();
           }
    }
}

原文地址:https://www.cnblogs.com/x-ph/p/8708889.html

时间: 2024-10-05 05:04:45

java更改图片格式,,更改图片大小,并实现多线程上传图片。的相关文章

BMP GIF PNG JPG等图片格式的区别和适用情况

作者:赵鑫链接:https://www.zhihu.com/question/20028452/answer/142593276来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文介绍和比较几种常见图片文件格式的优缺点,并介绍不同的文件格式对Web应用程序性能的影响. 有损vs无损 图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种. 有损压缩.指在压缩文件大小的过程中,损失了一部分图片的信息,也即降低了图片的质量,并且这

七牛对用户使用webp图片格式的使用建议

Qiniu 七牛问题解答 Chrome浏览器是可打开WebP格式的.可是并非全部的浏览器都支持webp格式,比如360.ie等浏览器是不支持的. WebP格式,谷歌(google)开发的一种旨在加快图片载入速度的图片格式.图片压缩体积大约仅仅有JPEG的2/3.并能节省大量的server带宽资源和数据空间.Facebook Ebay等知名站点已经開始測试并使用WebP格式. 但WebP是一种有损压缩.相较编码JPEG文件,编码相同质量的WebP文件须要占用很多其它的计算资源. Chrome浏览器

gif/jpg/png 图片格式 简单对比

本文章来自于艾某人的网易博客. 在网站开发中,我们经常会用到背景图,或者是数据图,这些都是图片,我们常用的图片的文件格式有三种:GIF,JPG,PNG.这三种图片格式具有不同的特点,对动画.透明度支持的情况不同,同时对色彩的处理也不同.我们在开发的过程中只有选择合适的图片格式,才能使我们的开发速度更快. 在面试的过程中,发现被问的很频繁的是有关于图片格式的问题,这时候才猛然发觉我对这些问题知之甚少,仅停留在表面的一些认知,可能表面的认知也是需要提一下的,但是对于图片的认识越深,才能在选用的过程中

网页制作会用到的图片格式有哪些?

png-8,png-24,jpeg,gif,svg,还有Webp. Webp:WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间.Facebook Ebay等知名网站已经开始测试并使用WebP格式. 在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%

[html] Webp、Apng图片格式

WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间. 与JPEG相同,WebP是一种有损压缩.但谷歌表示,这种格式的主要优势在于高效率.他们发现,“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%. 谷歌浏览器已经支持webp格式,Opera在版本号Opera11.10后也增加了支持,然而火狐和ie暂时还不支持webp格式,可以采用flash插件来显示webp,当然这样会耗

页面新宠图片格式WebP

WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间.Facebook Ebay等知名网站已经开始测试并使用WebP格式. 与JPEG相同,WebP是一种有损压缩.但谷歌表示,这种格式的主要优势在于高效率.他们发现,“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%.谷歌浏览器已经支持webp格式,Opera在版本号Opera11.10后也增加了支持,然而火狐和ie暂时还不支

常用的图片格式

常用图片格式 图片是网页制作中很重要的素材,图片有不同的格式,每种格式都有自己的特性,了解这些特效,可以方便我们在制作网页时选取适合的图片格式,图片格式及特性如下: 1.psd psd是photoshop的专用格式,UI设计师使用photoshop设计效果图,最后会将psd格式的效果图交付给前端工程师,这种格式是不压缩的,而且保留了图层.透明和半透明等图片信息,所以这种图片格式的容量相对来说是很大的,前端工程师使用这种格式的效果图来切图制作网页,但是网页中不会使用这个格式的图片,它的作用一是保存

3.1、常用图片格式

图片是网页制作中很重要的素材,图片有不同的格式,每种格式都有自己的特性,了解这些特效,可以方便我们在制作网页时选取适合的图片格式,图片格式及特性如下: 1.psdpsd是photoshop的专用格式,UI设计师使用photoshop设计效果图,最后会将psd格式的效果图交付给前端工程师,这种格式是不压缩的,而且保留了图层.透明和半透明等图片信息,所以这种图片格式的容量相对来说是很大的,前端工程师使用这种格式的效果图来切图制作网页,但是网页中不会使用这个格式的图片,它的作用一是保存图片的原始数据,

js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" method="post" enctype="multipart/form-data">     <input name="photoimg" type="file" id="xwzx_f" style

ImageMagick更改图片格式进而缩小图片

在实例的生产环境中有时候我们的网站会用到比较小的图片,但是提供的图片相对来说比较大.像我之前文章中,我做了ImageMagick的安装和简单的使用实例,但是处理1M左右大小的图片最后还回有200k左右大小,当然对于生产环境还不尽满意.这时候就需要通过改变图片格式的方式来改变图片的大小. 参照之前的文章:http://xiaoxiaozhou.blog.51cto.com/4681537/1903499,需要做些补充说明.我们如果想要把png格式的图片转换为jpg格式的图片,需要做哪些工作: 1.