package com.sincere.weigeng; import com.drew.imaging.ImageMetadataReader; import com.drew.imaging.jpeg.JpegMetadataReader; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; import com.drew.metadata.Tag; import com.sun.imageio.plugins.png.PNGImageReader; import org.apache.commons.lang.StringUtils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Iterator; public class ImageUtils { /* *//** * 获取图片正确显示需要旋转的角度(顺时针) * @return *//* public static int getRotateAngleForPhoto(String filePath){ File file = new File(filePath); int angle = 0; Metadata metadata; try { metadata = JpegMetadataReader.readMetadata(file); Directory directory = metadata.getDirectory(ExifDirectory.class); if(directory.containsTag(ExifDirectory.TAG_ORIENTATION)){ // Exif信息中方向   int orientation = directory.getInt(ExifDirectory.TAG_ORIENTATION); // 原图片的方向信息 if(6 == orientation ){ //6旋转90 angle = 90; }else if( 3 == orientation){ //3旋转180 angle = 180; }else if( 8 == orientation){ //8旋转90 angle = 270; } } } catch (JpegProcessingException e) { e.printStackTrace(); } catch (MetadataException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return angle; }*/ /** * 获得图片调整角度 * make by dongxh 2017年11月1日下午3:40:20 * @param imgFile * @return */ public static Integer getImgRotateAngle(String imgFile){ return 0; /*int angel = 0; try { File file = new File(imgFile); Metadata metadata = ImageMetadataReader.readMetadata(file); for (Directory directory : metadata.getDirectories()) { for (Tag tag : directory.getTags()) { if (tag.getTagType() == ExifDirectoryBase.TAG_ORIENTATION) { String description = tag.getDescription(); // System.out.println(description); if (description.contains("90")) { // 顺时针旋转90度 angel = 90; } else if (description.contains("180")) { // 顺时针旋转180度 angel = 180; } else if (description.contains("270")) { // 顺时针旋转270度 angel = 270; } } } } // System.out.println(angel); } catch (Exception e) { e.printStackTrace(); } return angel;*/ /*Integer angel = 0; Metadata metadata = null; try{ if(StringUtils.isBlank(imgFile))return angel; File _img_file_ = new File(imgFile); if(!_img_file_.exists())return angel; metadata = JpegMetadataReader.readMetadata(_img_file_); Directory directory = metadata.getDirectory(ExifDirectory.class); Iterator iterator =directory.getTagIterator(); while (iterator.hasNext()){ System.out.println("directory:"+iterator.next().toString()); } if(directory != null && directory.containsTag(ExifDirectory.TAG_ORIENTATION)){ int orientation = directory.getInt(ExifDirectory.TAG_ORIENTATION); // 原图片的方向信息 if(6 == orientation ){ //6旋转90 angel = 90; }else if( 3 == orientation){ //3旋转180 angel = 180; }else if( 8 == orientation){ //8旋转90 angel = 270; } } }catch(Exception e){ e.printStackTrace(); } return angel;*/ } /** * 旋转照片 * @return */ public static String rotatePhonePhoto(String fullPath, int angel){ BufferedImage src; try { src = ImageIO.read(new File(fullPath)); int src_width = src.getWidth(null); int src_height = src.getHeight(null); int swidth=src_width; int sheight=src_height; if(angel==90||angel==270){ swidth = src_height; sheight= src_width; } Rectangle rect_des = new Rectangle(new Dimension(swidth,sheight)); BufferedImage res = new BufferedImage(rect_des.width, rect_des.height,BufferedImage.TYPE_INT_RGB); Graphics2D g2 = res.createGraphics(); g2.translate((rect_des.width - src_width) / 2, (rect_des.height - src_height) / 2); g2.rotate(Math.toRadians(angel), src_width / 2, src_height / 2); g2.drawImage(src, null, null); ImageIO.write(res, "jpg", new File(fullPath)); } catch (IOException e) { e.printStackTrace(); } return fullPath; } }