也可由用百度api调用,但是收钱:https://ai.baidu.com/ai-doc/IMAGEPROCESS/Fl3sg75nv
package leyan.admin.web.controller;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import net.coobird.thumbnailator.Thumbnails;
import org.imgscalr.Scalr;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@RequiredArgsConstructor
@RestController
@RequestMapping("text-image")
@Setter
@Getter
public class TextImage {
/**
* 指定比例缩小放大
* <dependency>
* <groupId>net.coobird</groupId>
* <artifactId>thumbnailator</artifactId>
* <version>0.4.11</version>
* </dependency>
*/
@GetMapping("/changeScale")
public String changeScale(MultipartFile resource) {
String toFile = "D:\\";
try {
//scale 根据大小处理 小于缩放 大于1 放大
Thumbnails.of(resource.getInputStream()).scale(4.0).toFile(toFile);
} catch (IOException e) {
e.printStackTrace();
}
return "changeScale";
}
/**
* 指定比例缩小放大
* <dependency>
* <groupId>org.imgscalr</groupId>
* <artifactId>imgscalr-lib</artifactId>
* <version>4.2</version>
* </dependency>
*/
@GetMapping("/changeScale2")
public String changeScale2(MultipartFile resource) {
String toFile = "D:\\";
try {
// 将图片读入内存
String imgPath = "C:\\Users\\Administrator\\Pictures\\MCEjishiqi.jpg";
BufferedImage image = ImageIO.read( new FileInputStream(imgPath) );
BufferedImage thumbnail= Scalr.resize( image,800);
// 保存图片
File outputfile = new File("save.png");
ImageIO.write(thumbnail, "jpg", outputfile);
} catch (Exception e) {
e.printStackTrace();
}
return "changeScale";
}
}
@GetMapping("/changeScale3")
public String changeScale3(MultipartFile resource) {
String toFile = "D:\\";
try {
// 将图片读入内存
String imgPath = "C:\\Users\\Administrator\\Pictures\\kxj-banner-20230208.jpg";
BufferedImage image = ImageIO.read( new FileInputStream(imgPath) );
//剪裁
//BufferedImage bufferedImage = cropImage(image, 1200, 300);
//图片截取
BufferedImage subimage = image.getSubimage(400, 0, 1120, 300);
// 保存图片
File outputfile = new File("save4.png");
ImageIO.write(subimage, "jpg", outputfile);
} catch (Exception e) {
e.printStackTrace();
}
return "changeScale";
}
/**
* 读取图片后截取
*
* @param imagePath 图片绝对路径
* @param width 要截取的图片区域宽度
* @param height 要截取的图片区域高度
* @return BufferedImage 截取后的图片
* @throws IOException
*/
public static BufferedImage cropImage(BufferedImage imagePath, int width, int height) throws IOException {
//BufferedImage src = ImageIO.read(new File(imagePath)); //BufferedImage 类的图片资源
BufferedImage crop = imagePath.getSubimage(imagePath.getWidth() - width, imagePath.getHeight() - height, width, height);
return crop;
}