C#快速获取图像大小和分辨率(shell32)

C#快速获取图像大小和分辨率(shell32)

昨天使用metadata-extractor获取图像和分辨率,对于绝大多数图片的提取没有问题,今天进行批量图片测试发现对于JPEG格式为连续扫描的图片,数据惨不忍睹,读取时间比Image类还慢一半,无法忍受。。
尝试使用shell32,读取文件信息。未进行大批量测试,先做个记录

VS中引用 .COM 中的 Microsoft Shell Controls and Automation 修改嵌入互操作类型为 False

然后 using Shell32

public static void GetJpgSizeByShell(string JpgPath, out Size JpgSize, out float Wpx, out float Hpx)
		{		
			var shell = new ShellClass();
			Folder der = shell.NameSpace(Path.GetDirectoryName(JpgPath));
			FolderItem item = der.ParseName(Path.GetFileName(JpgPath));
			JpgSize = new Size(0, 0);
			try
			{
				Wpx = float.Parse(Regex.Replace(der.GetDetailsOf(item, 161), @"[^0-9]+", ""));//水平分辨率
				int w = int.Parse(Regex.Replace(der.GetDetailsOf(item, 162), @"[^0-9]+", ""));//图片宽像素
				Hpx = float.Parse(Regex.Replace(der.GetDetailsOf(item, 163), @"[^0-9]+", ""));//垂直分辨率
				int h = int.Parse(Regex.Replace(der.GetDetailsOf(item, 164), @"[^0-9]+", ""));//图片高像素
				JpgSize.Width = w;
				JpgSize.Height = h;
			}
			catch
			{
				JpgSize = new Size(0, 0);
				Wpx = 0;
				Hpx = 0;
			}
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值