Commit a893a80f authored by shiyu's avatar shiyu

图片旋转

parent 0da719a4
...@@ -158,6 +158,11 @@ ...@@ -158,6 +158,11 @@
</dependency> </dependency>
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.15.0</version>
</dependency>
<dependency> <dependency>
......
...@@ -6,6 +6,11 @@ import java.io.InputStream; ...@@ -6,6 +6,11 @@ import java.io.InputStream;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
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;
import com.wwdz.ch.db.dao.dts.DtsStorageDao; import com.wwdz.ch.db.dao.dts.DtsStorageDao;
...@@ -59,27 +64,37 @@ public class StorageService { ...@@ -59,27 +64,37 @@ public class StorageService {
*/ */
public String store(InputStream inputStream, long contentLength, String contentType, String fileName) { public String store(InputStream inputStream, long contentLength, String contentType, String fileName) {
BufferedImage bufferedImage = null; BufferedImage bufferedImage = null;
boolean rotation = false;
try { try {
bufferedImage = ImageIO.read(inputStream); bufferedImage = ImageIO.read(inputStream);
} catch (IOException e) { Metadata metadata = ImageMetadataReader.readMetadata(inputStream);
Directory imageDirectory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
int orientation = 1;
try{
orientation = imageDirectory.getInt(ExifIFD0Directory.TAG_ORIENTATION);
} catch (MetadataException ignore) {
}
switch (orientation) {
case 5: // - PI/2 and Flip X
case 6: // -PI/2 and -width
case 7: // PI/2 and Flip
case 8: // PI / 2
rotation = true;
}
} catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
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 = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getWidth() + "x" + bufferedImage.getHeight()+ "." + type; String keyName;
if (rotation) {
keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getHeight() + "x" + bufferedImage.getWidth() + "." + type;
} else {
keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getWidth() + "x" + bufferedImage.getHeight() + "." + type;
}
InputStream imageStream = bufferedImageToInputStream(bufferedImage, type); InputStream imageStream = bufferedImageToInputStream(bufferedImage, type);
storage.store(imageStream, contentLength, contentType, keyName); storage.store(imageStream, contentLength, contentType, keyName);
return generateUrl(keyName); return generateUrl(keyName);
// String url = generateUrl(key);
// DtsStorage storageInfo = new DtsStorage();
// storageInfo.setName(fileName);
// storageInfo.setSize((int) contentLength);
// storageInfo.setType(contentType);
// storageInfo.setKey(key);
// storageInfo.setUrl(url);
// DtsStorageService.add(storageInfo);
// return url;
} }
private String generateKey(String originalFilename) { private String generateKey(String originalFilename) {
......
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