zoukankan      html  css  js  c++  java
  • Java读取图片和EXIF信息

    后台需要读取客户端上传的图片,记录图片长宽,客户端以后就可以根据记录的长宽,展示图片。

    正常的图片,读取很简单,代码如下:

    BufferedImage originalImg = ImageIO.read(file.getInputStream()); 
    int originalwidth = originalImg.getWidth();  //上传图片的宽
    int originalheight = originalImg.getHeight();  //上传图片的高

    但是,有一种情况,客户端拍摄的照片,有可能带方向翻转的,宽大于高的,而是高大于宽。而无论是上面的代码还是直接在windows查看图片,也是得到宽大于高的信息.

    用上面直接读宽和高的代码,得到4128X2322,这个数值没有考虑图片翻转方向,所以是有误的。正确的做法,是读取图片的EXIF信息,根据其翻转的角度,确定宽和高。

    Metadata 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 || 8 == orientation){//翻转了90°和270°的,长宽对调
         int originalwidth = originalImg.getHeight();//上传图片的宽
        int originalheight = originalImg.getWidth(); //上传图片的高
      } 
    }
  • 相关阅读:
    团队第三次作业-王者终篇
    第二次团队任务之个人
    团队作业总和
    本次分工
    【软件工程】第一次作业
    面向对象第三次作业(向计算器进发)
    面向对象程序设计第二次作业(1)
    面向对象程序设计第二次作业(2)
    我的大一上(福州)
    第一周例行报告
  • 原文地址:https://www.cnblogs.com/xianxh/p/4345111.html
Copyright © 2011-2022 走看看