1、上传图片功能
@ApiOperation(value = "切割图片", notes = "切割图片,返回base64")
@RequestMapping(value = "/cutImageBase64", method = RequestMethod.POST)
public void cutImageBase64(@RequestBody @RequestParam("file") MultipartFile file, HttpServletResponse response) {
String filename = file.getOriginalFilename();
String name = filename.substring(0, filename.indexOf("."));
String suffix = filename.substring(filename.lastIndexOf("."));
String allowSuffix = ".bmp.jpg.jpeg.png.gif.pdf.doc.zip.rar.gz";
if (allowSuffix.indexOf(suffix) == -1) return null;
Calendar date = Calendar.getInstance();
File dateDirs = new File(date.get(Calendar.YEAR)
+ File.separator + (date.get(Calendar.MONTH) + 1));
File descFile = new File(AppConst.UPLOAD_PATH + File.separator + dateDirs + File.separator + filename);
int i = 1;
String newFilename = filename;
while (descFile.exists()) {
newFilename = name + "(" + i + ")" + suffix;
String parentPath = descFile.getParent();
descFile = new File(parentPath + File.separator + newFilename);
i++;
}
if (!descFile.getParentFile().exists()) {
descFile.getParentFile().mkdirs();
}
try {
file.transferTo(descFile);
} catch (Exception e) {
e.printStackTrace();
}
}
2、上传文件前端代码,参数传输方式
handleUpload (file) {
const params = new FormData()
params.append('file', file)
cutImageBase64(params).then(r => {}
}
3、切割图片
package com.dmc.util;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import sun.misc.BASE64Encoder;
import java.util.Calendar;
import org.springframework.web.multipart.MultipartFile;
import com.dmc.util.AppConst;
public class ImageUtil {
public static List<String> cutImageToBase64(String sourceFilePath,int index){
File file = new File(sourceFilePath);
if (file.exists()) {
return cutImageToBase64(file,index);
}else{
return null;
}
}
public static List<File> cutImageToFile(String sourceFilePath,int index){
File file = new File(sourceFilePath);
if (file.exists()) {
return cutImageToFile(file, index);
}else{
return null;
}
}
public static List<String> cutImageToBase64(File sourceFile,int index) {
List<String> list = new ArrayList<String>();
int suffixIndex = sourceFile.getName().lastIndexOf(".");
String suffix = sourceFile.getName().substring(suffixIndex+1);
try {
BufferedImage source = ImageIO.read(sourceFile);
int width = source.getWidth();
int height = source.getHeight();
if (index>1) {
int cWidth = width/index;
BufferedImage image = null;
for (int i = 0; i < index; i++) {
BASE64Encoder encoder = new BASE64Encoder();
int cw = i*cWidth;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image = source.getSubimage(cw,0,cWidth,height);
ImageIO.write(image, "PNG", baos);
byte[] bytes = baos.toByteArray();
list.add("data:image/"+suffix+";base64,"+encoder.encodeBuffer(bytes));
baos.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static List<File> cutImageToFile(File sourceFile,int index) {
List<File> list = new ArrayList<File>();
int suffixIndex = sourceFile.getName().lastIndexOf(".");
String suffix = sourceFile.getName().substring(suffixIndex+1);
String name = sourceFile.getName().substring(0,suffixIndex);
try {
BufferedImage source = ImageIO.read(sourceFile);
int width = source.getWidth();
int height = source.getHeight();
if (index>1) {
int cWidth = width/index;
BufferedImage image = null;
File file = new File(AppConst.UPLOAD_PATH);
if (!file.exists()) {
file.mkdirs();
}
int num =(int)(Math.random()*100000000);
for (int i = 0; i < index; i++) {
int cw = i*cWidth;
image = source.getSubimage(cw,0,cWidth,height);
String fileName = AppConst.UPLOAD_PATH + "/"+name+"_"+num+"_"+i+ "."+suffix;
file = new File(fileName);
ImageIO.write(image,"PNG", file);
list.add(file);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static File uploadFile(MultipartFile file) {
String filename = file.getOriginalFilename();
String name = filename.substring(0, filename.indexOf("."));
String suffix = filename.substring(filename.lastIndexOf("."));
String allowSuffix = ".bmp.jpg.jpeg.png.gif.pdf.doc.zip.rar.gz";
if (allowSuffix.indexOf(suffix) == -1) return null;
Calendar date = Calendar.getInstance();
File dateDirs = new File(date.get(Calendar.YEAR)
+ File.separator + (date.get(Calendar.MONTH) + 1));
File descFile = new File(AppConst.UPLOAD_PATH + File.separator + dateDirs + File.separator + filename);
int i = 1;
String newFilename = filename;
while (descFile.exists()) {
newFilename = name + "(" + i + ")" + suffix;
String parentPath = descFile.getParent();
descFile = new File(parentPath + File.separator + newFilename);
i++;
}
if (!descFile.getParentFile().exists()) {
descFile.getParentFile().mkdirs();
}
try {
file.transferTo(descFile);
} catch (Exception e) {
e.printStackTrace();
}
return descFile;
}
}