如何获取图片的信息(包括dpi) 【前端js 后台java window系统】 - Go语言中文社区

如何获取图片的信息(包括dpi) 【前端js 后台java window系统】


方法一:图片二进制(正在亲测,未得出结果)

据说DPI信息在jpg文件中用5个字节表示,直接读取二进制流就可以了

偏移 13 的1个字节:
X和Y的密度单位
units=0:无单位
units=1:点数/英寸
units=2:点数/厘米

偏移15的2字节:
水平方向像素密度

偏移16的2字节:
垂直方向像素密度

然而用js读二进制太扯了。。。
这得吃点内存的

//PHP读取图片二进制
<?php
    $image   = "compileType.png"; //图片地址
    $fp      = fopen($image, 'rb');
    $content = fread($fp, filesize($image)); //二进制数据
    $er = bindec($content);  // 二进制转换为十进制
    echo decbin($er);   //十进制转换为二进制显示
    //方法上来说貌似没有问题,但是结果令人觉得奇怪,先记下这问题
?>

结果为:11110001110111011111001011010101

结果太短了,和上面说的字节对不上??

 

 

方法二:读取图片exif信息(注意只有相机才能保证有exif信息,手机拍摄不一定有。具体有没有exif信息可以用方法四检查下详细信息--“exif版本”那里有没有值)

前端JavaScript:exif.js读取图像的元数据  http://code.ciaoca.com/javascript/exif-js/demo/  

实际操作时要加上检测网页是否加载完成 window.onload = function(){}  。 img标签src要转成base64编码或者用cdn加速图片位置,不能用本地图片(貌似是这样)。exif信息不存在的话, EXIF.getAllTags()的值为{},EXIF.pretty()为undefined

百度网盘地址:链接:https://pan.baidu.com/s/1bGxSoRNkcDzSDm1VFj03CQ 密码:8rof

后台java:获取照片信息---Java与图像的EXIF信息   http://yijianfengvip.blog.163.com/blog/static/1752734322010103084230677

工具地址:https://github.com/drewnoakes/metadata-extractor

 

方法三:Java图像处理库 Sanselan(现改为Commons Imaging)

Sanselan 是一个纯 Java 的图形库,由Apache 组织开发,可以读写各种格式的图像文件,包括快速解析各种图片(jpg,png,gif等都支持)信息例如大小/颜色/icc以及元数据等。尽管因为是Java开发的,在处理速度上会稍微慢一 些,但具备良好的可移植性。现已发布1.0 版本(改名为Commons Imaging),

本人测试手机图片都会读取到 -1 ,手动另存一下的话就能正常读取。

下载位置:http://commons.apache.org/proper/commons-imaging/

百度网盘地址:链接:https://pan.baidu.com/s/1IVKBG1JHgP50WpUufM2sAg 密码:c278

API文档:http://commons.apache.org/proper/commons-imaging/apidocs/index.html

package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.imaging.ImageInfo;
import org.apache.commons.imaging.ImageReadException;
import org.apache.commons.imaging.Imaging;

public class ImageInfoTest {
	public static void main(String[] args) throws ImageReadException, IOException {
		ImageInfo imageInfo = 
				Imaging.getImageInfo(
						new File("C:\Users\chanye1\Desktop\ever.jpg"));
		
		System.out.println(imageInfo);    //输出可以读取的图片属性
		System.out.println("该图片dpi为:"+imageInfo.getPhysicalHeightDpi()); //输出图片dpi
	}
}

输出结果:

Format Details: Jpeg/JFIF v.1.1
Bits Per Pixel: 24
Comments: 0
Format: JPEG
Format Name: JPEG (Joint Photographic Experts Group) Format
Compression Algorithm: JPEG
Height: 2327
MimeType: image/jpeg
Number Of Images: 1
Physical Height Dpi: 200
Physical Height Inch: 11.635
Physical Width Dpi: 200
Physical Width Inch: 8.255
Width: 1651
Is Progressive: false
Is Transparent: false
Color Type: YCbCr
Uses Palette: false

该图片dpi为:200

备注:eclipse快捷键ctrl+o一键导包

 

方法四:window系统查看(jpg才能读到dpi)

 

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/ion_L/article/details/82382892
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-23 19:53:32
  • 阅读 ( 683 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢