java實現圖片分割指定大小

本文實例為大傢分享瞭java實現圖片分割指定大小的具體代碼,供大傢參考,具體內容如下

1.使用工具:Thumbnails

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

可以簡潔的實現圖片的縮放、壓縮、旋轉、水印、格式轉換等操作。

2.引入maven

<dependency>
      <groupId>net.coobird</groupId>
      <artifactId>thumbnailator</artifactId>
      <version>0.4.8</version>
</dependency>
//最新版本可自查

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().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.write(bi2, "jpg", new File("e:/2.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: