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

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

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

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

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

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

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

//PHP读取图片二进制

结果为: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 ,手动另存一下的话就能正常读取。

如何获取图片的信息(包括dpi) 【前端js 后台java window系统】_第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)

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

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

 

 

 

你可能感兴趣的:(实战,前端积累,后台积累)