不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
C#获取图像Exif信息
编辑:dnawo 日期:2010-01-13
复制内容到剪贴板
程序代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
namespace Console_Application
{
class Program
{
public static void Main(string[] args)
{
Dictionary<string,string> exif = new Dictionary<string,string>();
Image image = Image.FromFile(@"e:\www\test.jpg");
PropertyItem[] properties = image.PropertyItems;
foreach(PropertyItem property in properties)
{
switch(property.Id)
{
//Exif
case 0x010E:
exif["ImageTitle"] = ASCIIToString(property.Value);
break;
case 0x010F:
exif["Make"] = ASCIIToString(property.Value);
break;
case 0x0110:
exif["Model"] = ASCIIToString(property.Value);
break;
case 0x0112:
exif["Orientation"] = ShortToString(property.Value,0);
break;
case 0x011A:
exif["XResolution"] = RationalToSingle(property.Value,0);
break;
case 0x011B:
exif["YResolution"] = RationalToSingle(property.Value,0);
break;
case 0x0128:
exif["ResolutionUnit"] = ShortToString(property.Value,0);
break;
case 0x0131:
exif["Software"] = ASCIIToString(property.Value);
break;
case 0x0132:
exif["DateTime"] = ASCIIToString(property.Value);
break;
//GPS
case 0x0002:
exif["GPSLatitude"] = string.Format("{0}°{1}′{2}″",
RationalToSingle(property.Value,0),
RationalToSingle(property.Value,8),
RationalToSingle(property.Value,16)
);
break;
case 0x0004:
exif["GPSLongitude"] = string.Format("{0}°{1}′{2}″",
RationalToSingle(property.Value,0),
RationalToSingle(property.Value,8),
RationalToSingle(property.Value,16)
);
break;
case 0x0006:
exif["GPSAltitude"] = RationalToSingle(property.Value,0);
break;
}
}
foreach(KeyValuePair<string, string> kvp in exif)
Console.WriteLine(kvp.Key + ": " + kvp.Value);
Console.ReadKey(true);
}
//Method
static string ByteToString(byte[] b,int startindex)
{
if(startindex+1<=b.Length)
return ((char)b[startindex]).ToString();
else
return string.Empty;
}
static string ShortToString(byte[] b,int startindex)
{
if(startindex+2<=b.Length)
return BitConverter.ToInt16(b,startindex).ToString();
else
return string.Empty;
}
static string RationalToSingle(byte[] b,int startindex)
{
if(startindex+8<=b.Length)
return (BitConverter.ToSingle(b,startindex)/BitConverter.ToSingle(b,startindex+4)).ToString();
else
return string.Empty;
}
static string ASCIIToString(byte[] b)
{
return Encoding.ASCII.GetString(b);
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
namespace Console_Application
{
class Program
{
public static void Main(string[] args)
{
Dictionary<string,string> exif = new Dictionary<string,string>();
Image image = Image.FromFile(@"e:\www\test.jpg");
PropertyItem[] properties = image.PropertyItems;
foreach(PropertyItem property in properties)
{
switch(property.Id)
{
//Exif
case 0x010E:
exif["ImageTitle"] = ASCIIToString(property.Value);
break;
case 0x010F:
exif["Make"] = ASCIIToString(property.Value);
break;
case 0x0110:
exif["Model"] = ASCIIToString(property.Value);
break;
case 0x0112:
exif["Orientation"] = ShortToString(property.Value,0);
break;
case 0x011A:
exif["XResolution"] = RationalToSingle(property.Value,0);
break;
case 0x011B:
exif["YResolution"] = RationalToSingle(property.Value,0);
break;
case 0x0128:
exif["ResolutionUnit"] = ShortToString(property.Value,0);
break;
case 0x0131:
exif["Software"] = ASCIIToString(property.Value);
break;
case 0x0132:
exif["DateTime"] = ASCIIToString(property.Value);
break;
//GPS
case 0x0002:
exif["GPSLatitude"] = string.Format("{0}°{1}′{2}″",
RationalToSingle(property.Value,0),
RationalToSingle(property.Value,8),
RationalToSingle(property.Value,16)
);
break;
case 0x0004:
exif["GPSLongitude"] = string.Format("{0}°{1}′{2}″",
RationalToSingle(property.Value,0),
RationalToSingle(property.Value,8),
RationalToSingle(property.Value,16)
);
break;
case 0x0006:
exif["GPSAltitude"] = RationalToSingle(property.Value,0);
break;
}
}
foreach(KeyValuePair<string, string> kvp in exif)
Console.WriteLine(kvp.Key + ": " + kvp.Value);
Console.ReadKey(true);
}
//Method
static string ByteToString(byte[] b,int startindex)
{
if(startindex+1<=b.Length)
return ((char)b[startindex]).ToString();
else
return string.Empty;
}
static string ShortToString(byte[] b,int startindex)
{
if(startindex+2<=b.Length)
return BitConverter.ToInt16(b,startindex).ToString();
else
return string.Empty;
}
static string RationalToSingle(byte[] b,int startindex)
{
if(startindex+8<=b.Length)
return (BitConverter.ToSingle(b,startindex)/BitConverter.ToSingle(b,startindex+4)).ToString();
else
return string.Empty;
}
static string ASCIIToString(byte[] b)
{
return Encoding.ASCII.GetString(b);
}
}
}
参考资料
·http://msdn.microsoft.com/zh-cn/library/system.drawing.imaging.propertyitem.id.aspx






评论: 0 | 引用: 0 | 查看次数: 5335
发表评论
请登录后再发表评论!