找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27072|回复: 10

[问题求助] [已解决]PowerShell如何获取图片像素大小?

[复制链接]
发表于 2013-8-28 20:48:43 | 显示全部楼层 |阅读模式
本帖最后由 DAIC 于 2013-8-29 17:08 编辑

分别获取长和宽
我要根据像素大小做进一步处理

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-8-29 10:26:55 | 显示全部楼层
答:搜msdn

又答:试试 System.Drawing.Bitmap类.
http://msdn.microsoft.com/zh-cn/ ... drawing.bitmap.aspx
(当然很多其他类也行,只不过这个类,基于.net2.0很多低版本win,甚至低于winxp也能正常使用)
位图由图形图像及其特性的像素数据组成。 可使用许多标准格式将位图保存到文件中。 GDI+ 支持下列文件格式:BMP、GIF、EXIF、JPG、PNG 和 TIFF。 有关支持的格式的更多信息,请参见位图类型。

里面有

有 构造函数
Bitmap(Image) 从指定的现有图像初始化 Bitmap 类的新实例。

有 Height,Width属性


我不厌其烦地同bat脚本人讲:powershell依赖.net ,功能强大,语法简洁,系统管理,各种常用的需求,样样都能..人家微软早做好了,只恨我们学的不深,可我们很多类不知道,不会用.
 楼主| 发表于 2013-8-29 11:21:04 | 显示全部楼层
回复 2# PowerShell


    不懂C#,可否给个PowerShell代码学习一下?
发表于 2013-8-29 14:29:59 | 显示全部楼层
  1. [system.reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
  2. $叫我板牙哥 = New-Object System.Drawing.Bitmap("d:\8dce33dfb918889c558abb9ea8f171c17ff917f2128b4-OuLxbs_fw580.jpg")
  3. $叫我板牙哥.height
  4. $叫我板牙哥.width
复制代码

评分

参与人数 1技术 +1 收起 理由
DAIC + 1 乐于助人

查看全部评分

发表于 2013-8-29 15:14:36 | 显示全部楼层
System.Drawing.Image比System.Drawing.Bitmap功能更强些
 楼主| 发表于 2013-8-29 15:35:45 | 显示全部楼层
回复 4# PowerShell


这个报错如何解决?

d:\Test>type test.ps1
$objPic = New-Object System.Drawing.Bitmap("a.jpg")
$objPic.height
$objPic.width

d:\Test>powershell -f test.ps1
New-Object : Cannot find type [System.Drawing.Bitmap]: make sure the assembly containing this type is loaded.
At D:\Test\test.ps1:1 char:21
+ $objPic = New-Object <<<<  System.Drawing.Bitmap("a.jpg")
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
发表于 2013-8-29 16:30:50 | 显示全部楼层
本帖最后由 PowerShell 于 2013-8-29 16:38 编辑

抱歉 已更正
 楼主| 发表于 2013-8-29 17:03:14 | 显示全部楼层
回复 7# PowerShell


    成功了。非常感谢!
 楼主| 发表于 2013-8-29 17:07:50 | 显示全部楼层
回复 5# broly


换成System.Drawing.Image之后报错

d:\Test>type test.ps1
[system.reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
$objPic = New-Object System.Drawing.Image("a.jpg")
$objPic.width
$objPic.height

d:\Test>powershell -f test.ps1
New-Object : Constructor not found. Cannot find an appropriate constructor for type System.Drawing.Image.
At D:\Test\test.ps1:2 char:21
+ $objPic = New-Object <<<<  System.Drawing.Image("a.jpg")
    + CategoryInfo          : ObjectNotFound: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand
发表于 2013-8-29 19:50:23 | 显示全部楼层
  1. $objPic = New-Object System.Drawing.Image("a.jpg")
复制代码
改为
  1. $objPic = [System.Drawing.Image]::FromFile("a.jpg")
复制代码
System.Drawing.Image 支持位图和metafile文件

评分

参与人数 1技术 +1 收起 理由
DAIC + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-8-30 13:28:18 | 显示全部楼层
回复 10# broly


成功了,多谢!
  1. [system.reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
  2. $objPic = [System.Drawing.Image]::FromFile("a.bmp")
  3. $objPic.width
  4. $objPic.height
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:24 , Processed in 0.030499 second(s), 14 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表