Java压缩图片

需求:下载一张网络图,压缩成固定大小并上传到本地服务器

工具:Thumbnails

步骤:

1、引入Thumbnails依赖:

<!-- 图片缩略图 -->
<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency>    

2、核心方法:

// InputStream fis
// File img
Thumbnails.of(fis).size(width,height).toFile(img);

3、demo:

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.junit.Test;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Main.class)
public class UtilTest{
    @Test
	public void uploadTest() throws IOException{
        //网络图片地址
		String srcUrl = "http://";
		String savePath = "E:/";
		String urlPath = "http://localhosr:11001/";
        // 转url资源链接
		URL url = new URL(srcUrl);
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        //设置超时间为3秒
        conn.setConnectTimeout(3*1000);
        //防止屏蔽程序抓取而返回403错误
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //得到输入流
        InputStream inputStream = conn.getInputStream();
		String codeUrl = (new UploadUtil()).uploadScaleImg(inputStream, savePath, urlPath, 80, 80);
		System.out.println(codeUrl);
	}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import net.coobird.thumbnailator.Thumbnails;
public class UploadUtil {
    /**
	 * 上传压缩图片文件
	 * @param fis 图片输入流
	 * @param savePath 存放路径
	 * @param urlPath 访问路径
	 * @param width 压缩文件宽
	 * @param height 压缩文件高
	 * @author zhangyan
	 * @date 2020年3月30日13:27:02
	 */
	public String uploadScaleImg(InputStream fis, String savePath, String urlPath, int width, int height) throws IOException {
        // 图片文件命名
		StringBuffer tempFileName = new StringBuffer("qrCode");
		tempFileName.append("-");
		tempFileName.append(FMT.format(new Date()));
		tempFileName.append(UUID.randomUUID().toString().replace("-", "").substring(16));
		tempFileName.append(".png");
        // 指定路径创建目录
		File tempPackage = new File(savePath);
		if (!tempPackage.exists()) {
			tempPackage.mkdirs();
		}
        // 创建图像文件
		File img = new File(savePath + File.separator + tempFileName);
        // 指定宽高压缩文件
		Thumbnails.of(fis).size(width,height).toFile(img);
        // 返回访问路径
		String serverSavePath = urlPath + "/" + tempFileName.toString();
		return serverSavePath;
	}	
}

Thumbnails还支持按比例压缩、旋转、加水印、输出到OutputStream等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章