java实现图片分割指定大小

网友投稿 265 2022-09-30


java实现图片分割指定大小

本文实例为大家分享了java实现图片分割指定大小的具体代码,供大家参考,具体内容如下

1.使用工具:Thumbnails

Thumbnails 是由谷歌提供的图片处理包,目前版本0.4.8。

可以简洁的实现图片的缩放、压缩、旋转、水印、格式转换等操作。

2.引入maven

net.coobird

thumbnailator

0.4.8

//最新版本可自查

3.工具类

import org.springframework.web.multipart.MultipartFile;

import net.coobird.thumbnailator.Thumbnails;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

/**

* @Auther: lch

* @Date: 2019/3/11 09:58

* @Description: 图片工具类

*/

public class ImgUtils {

public static byte[] uploadImg(Integer height,Integer width,MultipartFile file) throws Exception{

String fileSuffix=file.getOriginalFilename().substring(file.getOriginalFilename(http://).lastIndexOf(".")+1);

BufferedImage bufferedImageBig = Thumbnails.of(file.getInputStream())

.forceSize(height, width).asBufferedImage();

//大图字节转换

ByteArrayOutputStream outBig = new ByteArrayOutputStream();

try {

ImageIO.write(bufferedImageBig, fileSuffix, outBig);

} catch (IOException e) {

e.printStackTrace();

}

return outBig.toByteArray();

}

}

4.切割图片返回字节数组

/**

* 接收文件

*

*

* @param model

* @return

* @throws IOException

* @throws IllegalStateException

*/

@RequestMapping(value = "imageupload")

public void imageUpload(MultipartFile file) throws IllegalStateException, IOException {

//文件名称

String realFileName = file.getOriginalFilename();

//文件后缀

String suffix = realFileName.substring(realFileName.lastIndexOf(".") + 1);

/***************文件处理*********************/

try {

//大图图片切割 --宽高 720 - 720

byte[] bytesBig = ImgUtils.uploadImg(720, 720, file);

//中图图片切割 --宽高 200 - 200

byte[] bytesMiddle = ImgUtils.uploadImg(200, 200, file);

//小图图片切割 --宽高 50- 50

byte[] bytesSmall = ImgUtils.uploadImg(50, 50, file);

/************以上三种byte数组,即为切割后的文件******************/

} catch (Exception e) {

System.out.println("错误");

}

}

再为大家补充一段相关代码:java图片切割圆形

@Test

public void test() {

try {

// 读取图片

BufferedImage bi1 = ImageIO.read(new File("g:/free-sheet-share.jpg"));

BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(),

BufferedImage.TYPE_INT_RGB);

Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1

.getHeight());

Graphics2D g2 = bi2.createGraphics();

g2.setBackground(Color.WHITE);

g2.fill(new Rectangle(bi2.getWidth(), bi2.getHeight()));

g2.setClip(shape);

//设置抗锯齿

g2.drawImage(bi1, 0, 0, null);

g2.dispose();

ImageIO.wUjqIUYjBrite(bi2, "jpg", new File("e:/2.jpg"));

} catch (IOException e) {

e.printStackTrace();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux扫描工具ClamAV(Clam AntiVirus)安装使用
下一篇:密码学笔记7 密钥管理国家标准(数字密码-记忆大师)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~