网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月24日漏签0天
vba吧 关注:17,099贴子:66,976
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回vba吧
>0< 加载中...

VBA 获取图片的尺寸(如宽度或高度)

  • 只看楼主
  • 收藏

  • 回复
  • tmtony
  • 吧主
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
今天有个网友有2000多张照片要取图片标题及相关的尺寸出来,不想手工处理,就想到用VBA批量实现出来,分享一下代码。
获取图片的尺寸(如宽度或高度),那使用VBA如何来实现呢?
一、使用LoadPicture及GetObjectAPI来获取
Private Declare Function GetObjectAPI Lib "gdi32" Alias"GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObjectAs Any) As Long
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Public Sub GetPicSize()
Dim bm As BITMAP
Dim pic As IPictureDisp
Set pic =stdole.LoadPicture("d:\test.Jpg")
Call GetObjectAPI(pic, Len(bm),bm)
MsgBox "你指定的图片大小 : 宽 " &bm.bmWidth & "×高 " &bm.bmHeight
End Sub
二、使用LoadPicture及Wscript来获取
Option Explicit
Dim pic As Object
Set pic = LoadPicture("D:\Test.jpg")
WScript.Echo "Width: "& Himetric2Pixel(pic.Width)
WScript.Echo "Height: " & Himetric2Pixel(pic.Height)
Function Himetric2Pixel(n)
'1 Inch = 2540 Himetric
Const key ="HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI"
Dim WshShell, dpi
Set WshShell =WScript.CreateObject("Wscript.Shell")
dpi = WshShell.RegRead(key)
Himetric2Pixel = Round(n * dpi /2540)
End Function


  • 第IX夜
  • 名震江湖
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
昨天刚看群里有用bat做的,不过看不懂。。。一会把代码粘上来


2026-04-24 07:34:25
广告
不感兴趣
开通SVIP免广告
  • 第IX夜
  • 名震江湖
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
<# :
cls
@璐村惂鐢ㄦ埛_000076K馃惥 off
rem 提取图片的文件大小、宽高尺寸和分辨率
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@璐村惂鐢ㄦ埛_053Q95e馃惥 %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$path = $args[0];
$outfile = '.\info.csv';
$ext = @('.jpg', '.jpeg', '.bmp', '.png', '.gif', '.TIF');
function formatsize($n) {
$m = '';
if ($n -ge 1073741824) {
$m = ($n / 1073741824).toString('0.00') + ' GB';
} else {
if ($n -ge 1048576) {
$m = ($n / 1048576).toString('0.00') + ' MB';
} else {
if ($n -ge 1024) {
$m = ($n / 1024).toString('0.00') + ' KB';
} else {
$m = $n.toString() + ' B';
};
};
};
return $m;
};
$outfile = $outfile -replace '^\.', $path.trimend('\');
[System.Collections.ArrayList]$s = @();
[void]$s.Add('"路径","大小","尺寸","分辨率"')
Add-Type -AssemblyName 'System.Drawing';
$files = @(dir -liter $path -Recurse | ? { ($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo]) });
for ($i = 0; $i -lt $files.length; $i++) {
$img = [System.Drawing.Image]::FromFile($files[$i].FullName);
$line = '"' + $files[$i].FullName + '",' + (formatsize $files[$i].length) + ',';
$line += $img.Width.toString() + 'x' + $img.Height.toString() + ',' + $img.HorizontalResolution.toString();
[void]$s.add($line);
Write-Host $line;
$img.Dispose();
};
[IO.File]::WriteAllLines($outfile, $s, [Text.Encoding]::Default);
我没测试,应该能用。看不懂……


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回vba吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示