精华内容
下载资源
问答
  • 怎么读取照片信息
    千次阅读
    更多相关内容
  • 用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息
  • Java 读取图片信息

    千次阅读 2021-07-26 13:17:57
    获取图片中拍摄 经度,纬度,拍摄地点、拍摄时间、上传时间、使用设备名、文件名、文件大小等信息 代码内容 1、WatermarkDto 信息实体类 import lombok.Data; @Data public class WatermarkDto { private ...

    技术概述

    获取图片中拍摄 经度,纬度,拍摄地点、拍摄时间、上传时间、使用设备名、文件名、文件大小等信息

    代码内容

    1、WatermarkDto 信息实体类

    import lombok.Data;
    
    @Data
    public class WatermarkDto {
        private String equipmentName;//设备名
        private String aiteName; //文件名
        private String ammaterNumber;//电表编号
        private String fileSize;//文件大小
        private String latitude;//经度
        private String longitude;//纬度
        private String shotTime;//拍摄时间
        private String abootTime;//上传时间
        private String address;//地址
    }
    

    2、controller 文件内容 

    @RestController
    @RequestMapping
    @Api(value = "工具栏",produces = "/toolController")
    public class ToolController {
        @Autowired
        private ToolService toolService;
        public static final Logger logger = LoggerFactory.getLogger(ToolController.class);
      @GetMapping("/pictureInformation")
        @ApiOperation(notes = "pictureInformation",value = "获取图片经纬度")
        public RestResponse<WatermarkDto> pictureInformation(MultipartFile imager) {
            WatermarkDto watermarkDto  = toolService.pictureInformation(imager);
            return RestResponse.ok(watermarkDto);
        }
    }

    3、service文件内容 编写逻辑内容 调用工具类 读取图片中的信息

    
    @Slf4j
    @Service
    public class ToolService {
    @Autowired
    private PictureInformationUtil pictureInformationUtil;
    
     /**
         * 获取图片信息(处理后)
         * @param imager
         * @return
         */
        public WatermarkDto pictureInformation(MultipartFile imager) {
            log.info("图片======="+imager);
            WatermarkDto watermarkDto = pictureInformationUtil.pictureInformation(imager);
            watermarkDto.setAddress(baiDuUtil.longitudeToAddress(watermarkDto.getLatitude(),watermarkDto.getLongitude()));
            return  watermarkDto;
        }
    }

    4、PictureInformationUtil 获取图片信息工具类

    import cn.pl.demon.dto.dto.prcture.PrctureMetadataDto;
    import cn.pl.demon.dto.dto.prcture.WatermarkDto;
    import com.drew.imaging.ImageMetadataReader;
    import com.drew.imaging.ImageProcessingException;
    import com.drew.imaging.jpeg.JpegMetadataReader;
    import com.drew.imaging.jpeg.JpegProcessingException;
    import com.drew.metadata.Directory;
    import com.drew.metadata.Metadata;
    import com.drew.metadata.Tag;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.DecimalFormat;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 图片或视频中提取EXIF,ICC等其他元数据信息
     */
    @Slf4j
    @Component
    public class PictureInformationUtil {
        @Autowired
        private StringInterceptUtil stringInterceptUtil;
        @Autowired
        private FileUtil fileUtil;
    
        /**
         * 获取图片中全部信息(未处理)
         * @param imager
         * @return
         * @throws Exception
         */
        public List<PrctureMetadataDto> pictureInformationUtil(MultipartFile imager) throws Exception {
            List<PrctureMetadataDto> prctureMetadataDtoList = new ArrayList<>();
            Metadata metadata = JpegMetadataReader.readMetadata((InputStream) imager);
            //输出所有附加属性数据
            for (Directory directory : metadata.getDirectories()) {
                for (Tag tag : directory.getTags()) {
                    log.info("名称:"+tag.getTagName()+"========内容:"+tag.getDescription());
                    PrctureMetadataDto prctureMetadataDto = new PrctureMetadataDto();
                    prctureMetadataDto.setName(tag.getTagName());
                    prctureMetadataDto.setDescription(tag.getDescription());
                    prctureMetadataDtoList.add(prctureMetadataDto);
                }
            }
            return prctureMetadataDtoList;
        }
    
        /**
         * 获取图片部分所需信息
         * @param imager
         * @return
         */
        public WatermarkDto pictureInformation(MultipartFile imager){
            try {
                WatermarkDto watermarkDto = new WatermarkDto();
                Metadata metadata = ImageMetadataReader.readMetadata((File) imager);
                for(Directory directory : metadata.getDirectories()){
                    for (Tag tag : directory.getTags()){
                        //log.info("名称:"+tag.getTagName()+"========内容:"+tag.getDescription());
                        //获取纬度
                        if("GPS Latitude".equals(tag.getTagName())){
                            log.info("获取纬度=="+tag.getDescription());
                            watermarkDto.setLatitude(pointToLatlong(tag.getDescription()));
                        }
                        //获取经度
                        if("GPS Longitude".equals(tag.getTagName())){
                            log.info("获取经度=="+tag.getDescription());
                            watermarkDto.setLongitude(pointToLatlong(tag.getDescription()));
                        }
                        //获取拍摄时间
                        if("File Modified Date".equals(tag.getTagName())){
                            watermarkDto.setAbootTime("上传时间:"+tag.getDescription());
                        }
                        //文件拍摄时间
                        if("Date/Time".equals(tag.getTagName())){
                            watermarkDto.setShotTime("拍摄时间:"+tag.getDescription());
                        }
                        //拍摄设备名
                        if("Model".equals(tag.getTagName())){
                            watermarkDto.setEquipmentName("设备名:"+tag.getDescription());
                        }
                        //获取文件名
                        if("File Name".equals(tag.getTagName())){
                            watermarkDto.setAiteName("文件名:"+tag.getDescription());
                        }
                        //文件大小
                        if("File Size".equals(tag.getTagName())){
                            //String size = tag.getDescription().substring(0,tag.getDescription().length()-6);
                            String size = getNetFileSizeDescription(Long.parseLong(stringInterceptUtil.get_StringNum(tag.getDescription())));
                            log.info(size);
                            watermarkDto.setFileSize("文件大小:"+size);
                        }
                    }
                }
                return watermarkDto;
            } catch (JpegProcessingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ImageProcessingException e) {
                e.printStackTrace();
            }
            return null;
        }
        /**
         * 经纬度格式  转换为  度分秒格式转换
         * @param point 坐标点
         * @return
         */
        public String pointToLatlong (String point ) {
            Double du = Double.parseDouble(point.substring(0, point.indexOf("°")).trim());
            Double fen = Double.parseDouble(point.substring(point.indexOf("°")+1, point.indexOf("'")).trim());
            Double miao = Double.parseDouble(point.substring(point.indexOf("'")+1, point.indexOf("\"")).trim());
            Double duStr = du + fen / 60 + miao / 60 / 60 ;
            return duStr.toString();
        }
    
        /**
         *  把byte转化为KB、MB、GB
         * @param size
         * @return
         */
        public String getNetFileSizeDescription(long size) {
            StringBuffer bytes = new StringBuffer();
            DecimalFormat format = new DecimalFormat("###.00");
            if (size >= 1024L * 1024L * 1024L * 1024L) {
                double i = (size / (1024.0 * 1024.0 * 1024.0 * 1024.0));
                bytes.append(format.format(i)).append("TB");
            } else if (size >= 1024L * 1024L * 1024L) {
                double i = (size / (1024.0 * 1024.0 * 1024.0));
                bytes.append(format.format(i)).append("GB");
            } else if (size >= 1024L * 1024L) {
                double i = (size / (1024.0 * 1024.0));
                bytes.append(format.format(i)).append("MB");
            } else if (size >= 1024L) {
                double i = (size / (1024.0));
                bytes.append(format.format(i)).append("KB");
            } else if (size < 1024L) {
                bytes.append("0B");
            }
            return bytes.toString();
        }
    }

    5、StringInterceptUtil 校验截取字符串

    @Slf4j
    @Component
    public class StringInterceptUtil {
       /**
         * 截取字符串内数字
         * @param string
         * @return
         */
        public String get_StringNum(String string){
            String regEx = "[^0-9]";
            Pattern p =Pattern.compile(regEx);
            Matcher m = p.matcher(string);
            return m.replaceAll("").trim();
        }
    
    
    }

    技术使用过程中遇到的问题以及解决过程

    获取图片信息时发现,当下的网络图片里面只存在图片的上传与图片名称,只有用摄像的原图才可以获取上述的所有信息

    技术总结

    读取一个图片的信息 一般不会常用,反而是存储和上传图片使用较多,这只是个小练习!!!

    最后本人是个小萌新,请大佬们多多指教!!!!!

    展开全文
  • java 读取图片信息

    2015-03-16 09:58:54
    java 读取图片信息,metadata-extractor-2.7.2.jar依赖于xmpcore-5.1.2.jar
  • PHP读取照片信息

    2021-04-13 11:32:03
    一、功能介绍二、实现效果*以QQ空间相册照片效果为例: 三、PHP获取照片信息功能实现1、具备前提环境要求:php必须开启mbstring扩展...2.创建读取照片的静态页面,实现文件的选取与上传效果如下: http://fex.baidu...

    一、功能介绍

    二、实现效果

    * 以QQ空间相册照片效果为例:

    6e2e19f3274731f9394cbc9c5a8fc133.png

    三、PHP获取照片信息功能实现

    1、具备前提

    环境要求:

    php必须开启mbstring扩展和exif扩展;

    文件要求:

    读取的照片必须是未经处理的照片(如压缩,裁剪等);

    2、具体步骤

    1. 开启php对应的扩展,随后重启web软件

    45ede6b37513030dff7281f7e13132c5.png

    去掉对应扩展前面的注释符号。

    2.创建读取照片的静态页面,实现文件的选取与上传

    效果如下:

    bac90b835dc8060a1884e20c78cf14c8.png

    http://fex.baidu.com/webuploader/getting-started.html#%E5%9B%BE%E7%89%87%E4%B8%8A%E4%BC%A0

    可以根据官网步骤实现上述效果。

    需要注意的是,以下几个地方代码需要进行调整:

    76ed92ad42d1c56c434a542652f51808.png

    根据自身情况修改对应的路径

    3.编写上传处理文件fileupload.php文件,实现文件的上传处理

    04ff3a4ed9be111aed841fe5597828d8.png

    该文件中重点步骤为第23行,由于此前已经开启了了exif扩展,此处可以借助exif相关函数操作文件。

    第24行代码为输出的设备信息,交给前段模板继续处理。

    4.完善前段回调处理

    在上传模板中编写一个空白div,用于展示返回信息

    4d982331c0e2abb26476ff179a25b3aa.png

    在上传成功回调函数出完善回显

    519a02c4b8c904a6ab300319f5072f17.png

    5.测试

    此时基本已经大功告成,我们可以选择一个手机拍摄的照片进行测试,观察测试结果

    上传前的效果:

    b64dcd9718966ef7e530b88fb3374053.png

    上传后的效果:

    41d65c739593fbf7e6795b187c8997a7.png

    根据前后图的对比,测试结果是正确的,说明信息读取成功。

    四、总结

    php的exif扩展除了能够获取拍摄设备的基本信息之外,还可以获取更多的信息,如经纬度,高度,曝光时间等多达50余项的信息。一个看似很高大上的功能在php中只需要依靠一个扩展加之几行代码就可以实现了。

    展开全文
  • jquery 读取图片信息

    2013-09-06 11:43:41
    jquery-exif差价,能够不使用php取图片信息,如:iso ,焦距,像素、相机型号等信息,注意本插件需要在服务器环境下才能看到鲜果
  • 横向图片友情链接特效,Flash读取图片信息实现的,带有按钮,可以向左、向右滚动,点击两头的小三角按钮即可滚动。不包括源文件,有些遗憾:Flash的宽度不可调,所以一般可用在网页底部做滚动链接,或者你的网页有...
  • 主要介绍了Java读取图片EXIF信息的方法,较为详细的分析了图片EXIF信息的概念、功能及java读取EXIF信息的实现技巧,需要的朋友可以参考下
  • 介绍了利用Python读取图片属性信息的方法,读取的内容包括GPS 信息图片分辨率、图片像素、设备商、拍摄设备等,有需要的朋友们可以参考借鉴。
  • JAVA读取照片信息 exif

    2012-11-06 12:25:02
    使用方法 加上一个用到的jar包metadata-extractor-2.3.1.jar
  • 主要介绍了PHP中读取照片exif信息的方法,本文从什么是exif信息开始讲解,使用PHP需要什么扩展、及它的安装方法和使用代码示例等,需要的朋友可以参考下
  • 通过第三方库exifread读取照片信息。exifread官网:https://pypi.org/project/ExifRead/一、安装exifreadpip install exifread二、读取照片信息,以及根据经纬度通过百度地图API获取位置import exifreadimport json...

    通过第三方库exifread读取照片信息。

    exifread官网:https://pypi.org/project/ExifRead/

    一、安装exifread

    pip install exifread

    二、读取照片信息,以及根据经纬度通过百度地图API获取位置

    import exifread

    import json

    import urllib.request

    # Open image file for reading (binary mode)

    f = open('001.jpg', 'rb')

    # Return Exif tags

    tags = exifread.process_file(f)

    '''

    #打印所有照片信息

    for tag in tags.keys():

    print("Key: {}, value {}".format(tag, tags[tag]))

    '''

    #打印照片其中一些信息

    print('拍摄时间:', tags['EXIF DateTimeOriginal'])

    print('照相机制造商:', tags['Image Make'])

    print('照相机型号:', tags['Image Model'])

    print('照片尺寸:', tags['EXIF ExifImageWidth'], tags['EXIF ExifImageLength'])

    #获取经度或纬度

    def getLatOrLng(refKey, tudeKey):

    if refKey not in tags:

    return None

    ref=tags[refKey].printable

    LatOrLng=tags[tudeKey].printable[1:-1].replace(" ","").replace("/",",").split(",")

    LatOrLng=float(LatOrLng[0])+float(LatOrLng[1])/60+float(LatOrLng[2])/float(LatOrLng[3])/3600

    if refKey == 'GPS GPSLatitudeRef' and tags[refKey].printable != "N":

    LatOrLng=LatOrLng*(-1)

    if refKey == 'GPS GPSLongitudeRef' and tags[refKey].printable != "E":

    LatOrLng=LatOrLng*(-1)

    return LatOrLng

    #调用百度地图API通过经纬度获取位置

    def getlocation(lat,lng):

    url = 'https://www.webkfz.com/d/file/202012251123009/20201225112223010' + lat + ',' + lng + '&output=json&pois=1&ak=申请的百度地图KEY'

    req = urllib.request.urlopen(url)

    res = req.read().decode("utf-8")

    str = json.loads(res)

    #print(str)

    jsonResult = str.get('result')

    formatted_address = jsonResult.get('formatted_address')

    return formatted_address

    lat = getLatOrLng('GPS GPSLatitudeRef','GPS GPSLatitude') #纬度

    lng = getLatOrLng('GPS GPSLongitudeRef','GPS GPSLongitude') #经度

    print('纬度:{} 经度:{}'.format(lat, lng))

    location = getlocation(str(lat), str(lng))

    print('位置:{}'.format(location))

    以上就是python 通过exifread读取照片信息的详细内容,更多关于python 读取照片信息的资料请关注WEB开发者其它相关文章!

    展开全文
  • java对照片进行定位 获取拍摄时间、拍摄地点、拍摄手机型号、像素比例、gps信息、海拔等等完整项目
  • python读取图片属性信息

    千次阅读 2022-03-07 21:47:46
    照片里面获取GPS信息。可交换图像文件常被简称为EXIF...Python中使用ExifRead包读取图片的属性信息,安装方式为: pip install exifread 使用exifread.process_file获取图像的信息: img_path = r"b...
  • 网页读取图片exif信息的源码,很方便 很实用。
  • 图片信息也是存在元数据的,网上官方称之为exif(exchange image file format),中文意思是交换图像文件格式。 每张图片都包含EXIF信息,它是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片...
  • 读取和修改Jpeg图片内的Exif信息的单元,原版只能读取我稍作修改可以修改Jpeg的信息
  • 通过一张照片来进行GPS定位,java实现起来就这么简单
  • Java读取图片文件

    千次阅读 2021-03-14 19:27:58
    需求:读取图片输入流,获取图片并存储在桌面上代码如下:import javax.imageio.ImageIO;import javax.imageio.stream.ImageOutputStream;import java.awt.*;import java.awt.image.BufferedImage;import java.io.*;...
  • delphi xe 读取照片缩略图及EXIF信息源码,测试通过。
  • Exif读取JPG图片信息+经纬度 ASP.NET

    热门讨论 2013-09-22 17:16:07
    这个例子 不但可以获取到图片常用信息,而且还可以获取到拍照时的GPS经纬度 Exif读取JPG图片信息+经纬度 ASP.NET
  • EXIF 读取照片的详细信息! 一:动态读取图片详细信息 二:对图片信息进行处理输出!
  • java对照片进行定位 获取拍摄时间、拍摄地点、拍摄手机型号、像素比例、gps信息、海拔等等完整项目
  • 图片进行分析,获取图片的GPS信息,拍摄时间、地点等。
  • C# 读取照片的EXIF信息

    千次阅读 2018-06-29 23:57:23
    一、使用 MetadataExtractor 读取 EXIF 信息 1、NuGet 中安装 在 NuGet 中搜索并安装 MetadataExtractor; 2、包信息 我安装后会有两个包:MetadataExtractor 2.0.0 和 XmpCore 5.1.3 3、代码实现 我是...
  • 博文链接http://blog.csdn.net/diyangxia/article/details/50995253,仅供参考

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 352,245
精华内容 140,898
关键字:

怎么读取照片信息