将图片说明加入到jpg文件内,最简便的方法是:用16进制编辑器(或编个读写程序)直接把这部分信息写入jpg文件保存,不会对图像有任何影响。
在jpg文件开始两字节是FF D8,可以在它们后面插入以下35字节(如果在FF
D8后面的是FF E0块,最好插入这个块后面,这个块的长度就是那两字节的TAG标志之后的两字节,长度不包括这两字节TAG,比如FF
E0块是16字节长,那么FF ED块就应该在原文件第21字节前面插入):
FF ED 00 22 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 38 42 49 4D 04 04 00 00 00 00 00 05 1C 02 78 00 00
上面00 22表示这个FF
ED块的长度(也是不包括TAG这两字节),注意到上面数据的字节数35-2=33,即00
21才对,但是本块最后还需要加一个00字节作为块结束符,所以预先写为00
22,后面还要修正的。所要添加的图片说明文字串应该在00结束符之前,比如“abcdef”的ASCII码是61 62 63 64 65
66,(说明文字可以用汉字),再加上结束符00。然后修改三处数字:1C 02 78是本块内的一种子块(以1C 02
..的三字节形式为标识符,可能和FF ED信息块一样有不止一个),这种标识符后面两字(如上面的00
00)是该子块数据长度(如abcdef就应该是6字节,即00
06,不包括三字节标识符和两字节长度),这是第一处需要修正的数据;第二处是本块的第29、30两字节(如上面的00
05),修正方法是在原值基础上增加新旧说明文字改变的长度,比如原值05对应串长为0,新串若为6,即可增加6-0=6,所以原值应改为
5+6=11(即16进制的0B);最后一处如果错了JPEG图像就不能显示了,应把FF ED后面的块长度数据00
22也加上文字说明改变的长度6,即00
28,这是本块最终的总长度-2字节标志占用。然后保存文件即可。如果原来jpg文件的Exif已经有这个图片说明信息(只搜索含有1C 02
78的FF ED块),应根据同样的原理直接在上面修改,因为显示Exif信息的图片说明的时候一般以最远离文件头的数据为准。
更多有关Exif信息访问www.exif.org,提供JEIDA制定的EXIF 2.1官方标准(1998.6.12)和2.2官方标准(2002.4)的PDF文件。
附一:写入JPEG图像EXIF信息的C#源代码
附二:以下资料来源http://www.opanda.com/cn/iexif/exif.htm
所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。文件
头中有一系列“0xFF??”格式的字符串,称为“标识”,用来标记JPEG文件的信息段。“0xFFD8”表示图像信息开始,“0xFFD9”表示图像
信息结束,这两个标识后面没有信息,而其它标识紧跟一些信息字符。
0xFFE0 --
0xFFEF之间的标识符称为“应用标记”,没有被常规JPEG文件利用,Exif正是利用这些信息串记录拍摄信息如快门速度、光圈值等,甚至可以包括全
球定位信息。按照Exif2.1标准对这些标识符的定义,数码相机可以把各种拍摄信息记入数码图像中,应用软件可以读取这些数据,再按照Exif2.1标
准,检索出它们的具体含义,一般包括以下一些信息:
ImageDescription:图像描述、来源,指生成图像的工具
Artist:作者,有些相机可以输入使用者名字
Make:生产者,指产品生产厂家
Model:型号,指设备型号
Orientation:方向,有的相机支持
XResolution/YResolution:X/Y方向分辨率
ResolutionUnit:分辨率单位,一般为PPI
Software:软件,显示固件Firmware版本
DateTime:日期和时间
YCbCrPositioning:色相定位
ExifOffset:Exif信息位置,定义Exif信息在文件中的写入位置,有些软件不显示
ExposureTime:曝光时间,即快门速度
FNumber:光圈系数
ExposureProgram:曝光程序,指程序式自动曝光的设置,各相机不同,可能是Sutter Priority(快门优先)、Aperture Priority(快门优先)等等
ISOspeedratings:感光度
ExifVersion:Exif版本
DateTimeOriginal:创建时间
DateTimeDigitized:数字化时间
ComponentsConfiguration:图像构造(多指色彩组合方案)
CompressedBitsPerPixel (BPP):压缩时每像素色彩位,指压缩程度
ExposureBiasValue:曝光补偿
MaxApertureValue:最大光圈
MeteringMode:测光方式,平均式测光、中央重点测光、点测光等
LightSource:光源,指白平衡设置
Flash:是否使用闪光灯
FocalLength:焦距,一般显示镜头物理焦距,有些软件可以定义一个系数,从而显示相当于35mm相机的焦距Maker Note (User Comment)作者标记、说明、记录
FlashPixVersion:FlashPix版本(个别机型支持)
ColorSpace:色域、色彩空间
ExifImageWidth (Pixel X Dimension):图像宽度,指横向像素数
ExifImageLength (Pixel Y Dimension):图像高度,指纵向像素数
Interoperability:IFD通用性扩展项定义指针,和TIFF文件相关,具体含义不详
FileSource:源文件
Compression:压缩比。
什么是EXIF?
Exif是英文Exchangeable Image
File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA -- Japan Electronic Industry
Development Association) 制订,目前的最新版本是2.21
版。国际标准化组织(ISO)正在制订的相机文件设计标准(DCF -- Design role for Camera File
system)可能以Exif2.1为基础。
Exif文件实际是JPEG文件的一种,遵从JPEG标准,只是在文件头信息中增加了有关拍摄信息的内容和索引图。所以你可以使用任何支持JPEG格式的图像工具软件观看或修改Exif文件,但打开时可能看不到Exif信息,一旦修改,Exif信息可能丢失。
简单来说,EXIF信息就是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在我
们熟知的JPEG/TIFF文件的头部,也就是说EXIF信息是镶嵌在JPEG/TIFF图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、
ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。简单的说,它就好像是傻
瓜相机的日期打印功能一样,只不过EXIF信息所记录的资讯更为详尽和完备。
什么是GPS?
GPS,Global Positioning
System(全球卫星定位系统),是美国从20世纪70年代开始耗巨资研制,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力
的新一代卫星导航与定位系统。越来越多的数码相机厂商也开始在他们的新产品里提供了GPS功能的支持,(如Kodak
DCS760等)可将照片拍摄瞬间所处经度、纬度、海拔的三维空间定位数据记载在图片里,只要图片里保留了完整的GPS信息,IExif就能准确地再现给
查看者。
什么是IPTC/NAA?
IPTC-NAA由美国报业协会(NAA)和国际印刷电信委员会(IPTC)制定的信息标准,以识别传输的文本和图像。该标准包括关于题注、关键字、类别、资料来源和原稿的条目等。当前许多新闻图片机器都包含了IPTC/NAA记录。
原文地址:http://hi.baidu.com/moneyin/blog/item/2f6617c4bd392bcc39db4990.html
分享到:
相关推荐
JPEG图片EXIF信息获取 jpegFault = true; //默认是JPEG文件格式 APP0Fault = true; ExifFault = true; stringData = NULL; Jfif = new JFIFEntry; m_JfifInfo = "不是JPEG文件或文件未含有JFIF 信息"; if ...
使用libexif为JPEG图片添加EXIF属性,支持交叉编译,在hi3519测试通过。
public class EXIF { #region -- Class level members -- // Class level members. private Image _picture; #endregion #region -- Constructors -- // Constructors. /// /// This is default ...
本实例基于VC++完成对JPEG图片EXIF信息的提取以及缩略图显示,其中EXIF图片的提取采用EXIF类完成,缩略图的显示部分由GDI+完成,在vs2005下编译通过,代码简单,有注释,非常适合学习和移植
make_extract_data.h make_extract_data.c 文件其中包含 -------------1.将缓冲区数据添加到JPEG图片中 -------------2.将JPEG图片X数据提取到...-------------实现缓冲区里的数据添加到JPEG图片中,生成新的JPEGX图片
linux下jpeg图片Exif标识.docx
delphi 含源码的jpeg图片文件exif格式解码文件,有详细DEMO,完全可用!
Delphi7写的读取JPEG文件Exif信息的类(含中文注释及Exif v2.3官方文档,含显示TIF格式的GraphicEx库) 支持JPEG格式的缩略图读取,TIF格式的暂时未遇到,不知正确与否。 记录为摩托罗拉CPU格式的Exif信息暂时未遇到...
了解EXIF文件格式和JPEG中EXIF信息头的作用,能够对EXIF信息头的构成有所了解,能够从其中读取信息,甚至能够修改,保存信息头。
读取和修改Jpeg图片内的Exif信息的单元,原版只能读取我稍作修改可以修改Jpeg的信息。
JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片...
JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片组件JPEG图片...
metadata-extractor-2.4.0.rar 获取 图片 exif 信息 使用方法: File jpegFile = new File("c:\\newchangetime.jpg"); Metadata metadata = JpegMetadataReader.readMetadata(jpegFile); Directory exif = ...
MagicEXIF 1.03 是目前最专业和最强大的EXIF信息修改器,不仅可以读取和修改JPEG、TIFF、RAW文件中的全部EXIF信息和GPS信息,更可以识别和修改众多厂商私有的图像数据,并且可以将图像文件头和编码特征100%恢复到...
-a 修改不同扩展名的同名文件名,相机拍摄的avi短片exif信息存储在与其同名的thm文件中,可用此指令给avi文件更名。一般与“-n”指令共同使用。 -ta<时差> 修正时差,例如时差根据时区确定,例如+1:00或者-1:00 -da...
aspjpeg 获取图片exif信息,很好用的哦~~
一个C++实现的读取照片的exif信息,用Qt写了个简单的界面
VC++ 下加载 JPG JPEG GIF PNG 图片最简单的方法
修改文件的jpeg文件头部分备注(此备注并非exif信息)。该指令会打开文本编辑器,并在编辑器关闭时将备注信息存入文件。 -cs <文本文件> 导出备注。例如"jhead –cs D:\988.txt D:\A.jpg" -ci <文本文件> 导入备注。...