[VB.NET]关于EXIF读取的详细问题,高手请进
发布时间:2020-12-16 23:39:47 所属栏目:大数据 来源:网络整理
导读:关于EXIF读取的详细问题,高手请进 我要读取一个图片的EXIF信息,信息中有汉字读不出来。 请大家给点源码吧~~THANK YOU __________________________________________________________________________ 我也想要。顶 _________________________________________
关于EXIF读取的详细问题,高手请进 我要读取一个图片的EXIF信息,信息中有汉字读不出来。 请大家给点源码吧~~THANK YOU __________________________________________________________________________ 我也想要。顶 __________________________________________________________________________ 自己 up 下 __________________________________________________________________________ 这里有段 c#的代码 那位高手帮我写成VB.NET private void WriteNewDescriptionInImage(string Filename,string NewDescription) { Image Pic; PropertyItem[] PropertyItems; byte[] bDescription=new Byte[NewDescription.Length]; int i; string FilenameTemp; Encoder Enc=Encoder.Transformation; EncoderParameters EncParms=new EncoderParameters(1); EncoderParameter EncParm; ImageCodecInfo CodecInfo=GetEncoderInfo( image/jpeg ); // copy description into byte array for (i=0;i // load the image to change Pic=Image.FromFile(Filename); // put the new description into the right property item PropertyItems=Pic.PropertyItems; PropertyItems[0].Id=0x010e; // 0x010e as specified in EXIF standard PropertyItems[0].Type=2; PropertyItems[0].Len=NewDescription.Length; PropertyItems[0].Value=bDescription; Pic.SetPropertyItem(PropertyItems[0]); // we cannot store in the same image,so use a temporary image instead FilenameTemp=Filename+ .temp ; // for lossless rewriting must rotate the image by 90 degrees! EncParm=new EncoderParameter(Enc,(long)EncoderValue.TransformRotate90); EncParms.Param[0]=EncParm; // now write the rotated image with new description Pic.Save(FilenameTemp,CodecInfo,EncParms); // for computers with low memory and large pictures: release memory now Pic.Dispose(); Pic=null; GC.Collect(); // delete the original file,will be replaced later System.IO.File.Delete(Filename); // now must rotate back the written picture Pic=Image.FromFile(FilenameTemp); EncParm=new EncoderParameter(Enc,(long)EncoderValue.TransformRotate270); EncParms.Param[0]=EncParm; Pic.Save(Filename,EncParms); // release memory now Pic.Dispose(); Pic=null; GC.Collect(); // delete the temporary picture System.IO.File.Delete(FilenameTemp); } __________________________________________________________________________ 上面的是写入EXIF信息 __________________________________________________________________________ Private Sub WriteNewDescriptionInImage(ByVal Filename As String,ByVal NewDescription As String) Dim Pic As Image Dim PropertyItems() As PropertyItem Dim bDescription() As Byte = New Byte(NewDescription.Length) {} Dim i As Integer Dim FilenameTemp As String Dim Enc As Encoder = Encoder.Transformation Dim EncParms As EncoderParameters = New EncoderParameters(1) Dim EncParm As EncoderParameter Dim CodecInfo As ImageCodecInfo = GetEncoderInfo( image/jpeg ) copy description into byte array For i = 0 To NewDescription.Length- 1 Step i + 1 load the image to changePic=Image.FromFile(Filename) Next put the new description into the right property item PropertyItems=Pic.PropertyItems PropertyItems(0).Id=0x010e 0x010e as specified in EXIF standard PropertyItems(0).Type=2 PropertyItems(0).Len=NewDescription.Length PropertyItems(0).Value=bDescription Pic.SetPropertyItem(PropertyItems(0)) we cannot store in the same image,so use a temporary image instead FilenameTemp=Filename+ .temp for lossless rewriting must rotate the image by 90 degrees! EncParm=New EncoderParameter(Enc,CType(EncoderValue.TransformRotate90,Long)) EncParms.Param(0)=EncParm now write the rotated image with new description Pic.Save(FilenameTemp,EncParms) for computers with low memory and large pictures: release memory now Pic.Dispose() Pic=Nothing GC.Collect() delete the original file,will be replaced later System.IO.File.Delete(Filename) now must rotate back the written picture Pic=Image.FromFile(FilenameTemp) EncParm=New EncoderParameter(Enc,CType(EncoderValue.TransformRotate270,Long)) EncParms.Param(0)=EncParm Pic.Save(Filename,EncParms) release memory now Pic.Dispose() Pic=Nothing GC.Collect() delete the temporary picture System.IO.File.Delete(FilenameTemp) End Sub __________________________________________________________________________ zzy1254(逍遥) Dim CodecInfo As ImageCodecInfo = GetEncoderInfo( image/jpeg ) 这个GetEncoderInfo有波澜线 上面的代码我已经改过 功能算是可以实现 英文字母可以写入 但要是写入的是汉字信息 就写不进去。 那位高人 给点相关资料 __________________________________________________________________________ for (i=0;i (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |