示例1,以像素为单位:

Loop 2  ; 解决管理员权限运行脚本时,文件无法拖拽的问题
  DllCall("ChangeWindowMessageFilter", "UInt", "0x" (_:=!_?49:233), "Uint", 1)

Gui, Add, Edit, xm ym ReadOnly r5 w300 vMyEdit,将文件拖入此窗口获取图片信息
Gui, Show, AutoSize
return

GuiDropFiles:
iSize := getImageSize(A_GuiEvent)
GuiControl,,MyEdit, % "文件:" A_GuiEvent "`n宽度:" iSize.width " 像素`n高度:" iSize.height " 像素"
Return

; https://github.com/Masonjar13/AHK-Library
getImageSize(imagePath){
  splitPath, imagePath, fN, fD
  oS:=comObjCreate("Shell.Application")
  oF:=oS.namespace(fD? fD: A_WorkingDir)
  oFn:=oF.parseName(fD? fN : imagePath)
  size:=strSplit(oFn.extendedProperty("Dimensions"),"x"," ?" chr(8234) chr(8236))
  return {width: size[1], height: size[2]}
}

 

示例2,以厘米为单位:

Loop 2  ; 解决管理员权限运行脚本时,文件无法拖拽的问题
  DllCall("ChangeWindowMessageFilter", "UInt", "0x" (_:=!_?49:233), "Uint", 1)

Gui, Add, Edit, xm ym ReadOnly r5 w300 vMyEdit,将文件拖入此窗口获取图片信息
Gui, Show, AutoSize
return

GuiDropFiles:
  strPic := A_GuiEvent
  objImage := ComObjCreate("WIA.ImageFile")
  objImage.LoadFile(strPic)
  winw := objImage.Width/objImage.HorizontalResolution*2.54
  winh := objImage.Height/objImage.VerticalResolution*2.54
  SetFormat, float, 0.1
  Transform, winw, Round, winw,1
  Transform, winh, Round, winh,1
  winp := winw*winh/10000
  GuiControl,,MyEdit,文件:%A_GuiEvent%`n宽度:%winw%厘米`n高度:%winh%厘米`n平方:%winp%平方
  Gui, Show, AutoSize
return

GuiClose:
  ExitApp

/*
objImage.Width                                ;宽度
objImage.Height                               ;高度
objImage.PixelDepth                           ;位深度
objImage.VerticalResolution                   ;垂直分辨率
objImage.HorizontalResolution                 ;水平分辨率
*/

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。