[VB.NET]关于EXIF读取的详细问题,高手请进

前端之家收集整理的这篇文章主要介绍了[VB.NET]关于EXIF读取的详细问题,高手请进前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

关于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 这句也有错 __________________________________________________________________________ zzy1254(逍遥) 写成。NET写错 正确写法应该是下面这个 For i = 0 To NewDescription.Length - 1 bDescription(i) = Asc(NewDescription(i)) Next i __________________________________________________________________________ 噢,这样啊,不好意思,转换完了也没有试就给你贴上来了 __________________________________________________________________________ 这个我试拉 能够添加英文的信息 但汉字信息 添加不了 找高人呀 __________________________________________________________________________

猜你在找的VB相关文章