Commit 61a0448d authored by shiyu's avatar shiyu

图片旋转

parent 42b46074
...@@ -10,6 +10,7 @@ import com.drew.imaging.ImageMetadataReader; ...@@ -10,6 +10,7 @@ import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Directory; import com.drew.metadata.Directory;
import com.drew.metadata.Metadata; import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException; import com.drew.metadata.MetadataException;
import com.drew.metadata.exif.ExifDirectoryBase;
import com.drew.metadata.exif.ExifIFD0Directory; import com.drew.metadata.exif.ExifIFD0Directory;
import com.wwdz.ch.core.consts.CommConsts; import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.MediaTypeEnum; import com.wwdz.ch.core.consts.MediaTypeEnum;
...@@ -91,6 +92,7 @@ public class StorageService { ...@@ -91,6 +92,7 @@ public class StorageService {
} }
String type = MediaTypeEnum.getByMime(contentType) == null ? MediaTypeEnum.IMAGE_JPG.getExt() : MediaTypeEnum.getByMime(contentType).getExt(); String type = MediaTypeEnum.getByMime(contentType) == null ? MediaTypeEnum.IMAGE_JPG.getExt() : MediaTypeEnum.getByMime(contentType).getExt();
String keyName; String keyName;
//宽x高
if (rotation) { if (rotation) {
keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getHeight() + "x" + bufferedImage.getWidth() + "." + type; keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getHeight() + "x" + bufferedImage.getWidth() + "." + type;
} else { } else {
...@@ -137,4 +139,41 @@ public class StorageService { ...@@ -137,4 +139,41 @@ public class StorageService {
return storage.generateUrl(keyName); return storage.generateUrl(keyName);
} }
/*public static ImgWH getImgWH(InputStream inputStream) {
try {
Image img = ImageIO.read(file);
wh.setWidth(img.getWidth(null));
wh.setHeight(img.getHeight(null));
//检查是否有旋转角度导致ImageIO获取宽高相反
Metadata metadata = ImageMetadataReader.readMetadata(inputStream);
StringBuilder description = new StringBuilder();
metadata.getDirectories().forEach(directory -> {
directory.getTags().forEach(tag -> {
if (tag.getTagType() == ExifDirectoryBase.TAG_ORIENTATION) {
description.append(tag.getDescription().replaceAll(" ", ""));
}
});
});
if (description.length() > 0) {
int rotateIndex = description.indexOf("Rotate");
int cwIndex = description.indexOf("CW");
if (rotateIndex >= 0 && cwIndex > 0 && rotateIndex < cwIndex) {
int angel = Integer.parseInt(description.substring(rotateIndex + 6, cwIndex));
if (angel == 90 || angel == 180) {
//宽高互换
int t = wh.getHeight();
wh.setHeight(wh.getWidth());
wh.setWidth(t);
}
}
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return wh;
}*/
} }
...@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; ...@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo;
import com.qiniu.storage.model.FileInfo; import com.qiniu.storage.model.FileInfo;
import com.wwdz.ch.core.consts.*; import com.wwdz.ch.core.consts.*;
import com.wwdz.ch.core.storage.QiniuStorage; import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.core.storage.StorageService;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.CacheUtil; import com.wwdz.ch.core.util.CacheUtil;
...@@ -149,6 +150,9 @@ public class ItemServiceImpl implements ItemService { ...@@ -149,6 +150,9 @@ public class ItemServiceImpl implements ItemService {
@Autowired @Autowired
ConsignSaleService consignSaleService; ConsignSaleService consignSaleService;
@Autowired
private StorageService storageService;
@Override @Override
public Result nameList(ItemRequestDto dto) { public Result nameList(ItemRequestDto dto) {
try { try {
...@@ -1104,16 +1108,18 @@ public class ItemServiceImpl implements ItemService { ...@@ -1104,16 +1108,18 @@ public class ItemServiceImpl implements ItemService {
try { try {
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
BufferedImage bufferedImage = ImageIO.read(inputStream); BufferedImage bufferedImage = ImageIO.read(inputStream);
String lastKey = ".jpg"; /*String lastKey = ".jpg";
if (StringUtils.isNotBlank(file.getOriginalFilename())) { if (StringUtils.isNotBlank(file.getOriginalFilename())) {
lastKey = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); lastKey = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
} }
String keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getWidth() + "x" + bufferedImage.getHeight() + lastKey; String keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getWidth() + "x" + bufferedImage.getHeight() + lastKey;
InputStream imageStream = bufferedImageToInputStream(bufferedImage, lastKey.substring(1)); InputStream imageStream = bufferedImageToInputStream(bufferedImage, lastKey.substring(1));
qiniuStorage.store(imageStream, file.getSize(), file.getContentType(), keyName); qiniuStorage.store(imageStream, file.getSize(), file.getContentType(), keyName);*/
String urlOfSize = qiniuStorage.generateUrl(keyName);
String originalFilename = file.getOriginalFilename();
String url = storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), originalFilename);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("url", urlOfSize); map.put("url", url);
return Result.success(map); return Result.success(map);
} catch (Exception e) { } catch (Exception e) {
logger.error("图片上传七牛云失败,原因:" + e.getMessage(), e); logger.error("图片上传七牛云失败,原因:" + e.getMessage(), e);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment