标题: [文件操作] [已解决]批处理如何将bmp图片文件另存为/转换成jpg图片文件 [打印本页]
作者: yu--zz5337 时间: 2015-11-28 13:20 标题: [已解决]批处理如何将bmp图片文件另存为/转换成jpg图片文件
本帖最后由 pcl_test 于 2016-12-14 22:22 编辑
因为公司有严格的规定,不可以下载或使用任何非公司软件
而公司又没有合适的软件,将3mb的bmp图片转换为200k的jpg图片
我想到的办法是 将bmp文件用windows自带图片软件mspaint.exe打开并另存为jpg文件
但是图片有几千张,以后可能会更多
所以想求助是否可以采用bat程序执行
要怎样写代码
作者: yiwuyun 时间: 2015-11-28 13:55
对mspaint的接口不了解。但用powerpoint肯定可以。 如果电脑没ppt那就不晓得了。
作者: pcl_test 时间: 2015-11-28 14:33
- //&cls&dir /b *.bmp|cscript -nologo -e:jscript "%~f0"&pause&exit/b
-
- var files = WScript.StdIn.ReadAll().split(/\r\n/);
- for (var i=0; i<files.length; i++){
- var img = new ActiveXObject('WIA.ImageFile');
- var imgps = new ActiveXObject('WIA.ImageProcess');
- img.LoadFile('.\\'+files[i]);
- imgps.Filters.Add(imgps.FilterInfos('Convert').FilterID);
- imgps.Filters(1).Properties('FormatID').Value = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
- var img = imgps.Apply(img);
- img.SaveFile('.\\'+files[i].replace(/(.+)\.[^\.]+$/,'$1')+'.jpg');
- }
复制代码
作者: 依山居 时间: 2015-11-28 14:36
我是来劝楼主换公司的。
作者: 523066680 时间: 2015-11-28 14:41
公司的电脑不能插U盘么?
作者: yu--zz5337 时间: 2015-11-28 14:57
太感谢pcl_test,真是太好了.
公司的电脑不可以连接任何电子设备,包括给手机充电
公司不允许使用外来软件是为了产权的保护问题, 我可以理解的,有被罚的经历.
再次感谢pcl_test,不知道我什么时候可以学到这种程度
是什么语言编写的阿
作者: yu2n 时间: 2015-11-28 14:57
- 'Convert bmp file(batch) type to JPG
- 'http://www.experts-exchange.com/questions/21969652/Convert-bmp-file-batch-type-to-JPG.html
- ' File Name:BmpToJpg.vbs
- Const xlHtml = 44: Dim Args, pPath
- Set Args = WScript.Arguments
- If Args.Count <> 1 Then WScript.Quit
- If LCase(Right(Args(0), 4)) <> ".bmp" Then WScript.Quit
- pPath = WScript.ScriptFullName & "\..\"
- With CreateObject("Excel.Application")
- With .Workbooks.Add(1)
- With .ActiveSheet
- .Pictures.Insert(Args(0)): .Shapes(1).Cut
- .PasteSpecial "Picture (JPEG)"
- End With
- .SaveAs pPath & "Temporary.htm", xlHtml: .Close False
- End With
- .Quit
- End With
- With CreateObject("Scripting.FileSystemObject")
- .CopyFile pPath & "Temporary.files\image001.jpg", _
- Replace(oPath, ".bmp", ".jpg", 1, -1, 1)
- .DeleteFile pPath & "Temporary.htm"
- .DeleteFolder pPath & "Temporary.files", True
- End With
复制代码
作者: aa77dd@163.com 时间: 2015-11-28 15:06
为楼主推荐一工具, 比较专业的
图片处理工具 ImageMagick , 带命令行工具
http://www.imagemagick.org/script/index.php
支持200+种格式互相转换
http://www.imagemagick.org/script/formats.php
命令行工具批处理代码示例
http://www.webhek.com/batch-optimize-images-script
作者: yu--zz5337 时间: 2015-11-28 15:08
本帖最后由 yu--zz5337 于 2015-11-28 15:21 编辑
回复 7# yu2n
感谢7楼的热心帮助.不过好像不行,没有成功.
感谢8楼的热心帮助.不过公司里不可以安装任何网络软件的,所以应该不行.
不过还是收藏了,可以在我自己的computer上用
作者: yu--zz5337 时间: 2015-11-29 10:32
不知道能不能单纯用bat就能解决的
作者: pcl_test 时间: 2015-11-29 11:08
回复 10# yu--zz5337
不能
作者: aa77dd@163.com 时间: 2015-11-29 11:26
本帖最后由 aa77dd@163.com 于 2015-11-29 11:27 编辑
回复 10# yu--zz5337
单纯批处理 需要 借助 命令行的图片转换工具 或者 调用某工具的 dll 接口 如果有这样工具的话
总之都需要一个命令行工具, 无论这个工具是微软提供的 还是第三方的
没有找到微软提供有这样的命令行工具,
而 ImageMagick 就提供了这样一个命令行工具 convert
批处理代码示例:
for %%f in (*.jpg) do (
convert "%%~nf.jpg" -type truecolor "%%~nf.bmp"
)
除非你的公司自己去开发一个这样的命令行工具, 恐怕没什么好办法了
作者: yu--zz5337 时间: 2015-11-29 11:57
感谢aa77dd@163.com 和 pcl_test 的回答.
作者: pcl_test 时间: 2016-12-14 22:21
- @echo off
- rem win7及以上系统运行
- powershell -c "[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing');dir *.bmp|%%{$image=[System.Drawing.Image]::FromFile($_.FullName);$image.Save($($_.BaseName+'.jpg'), [System.Drawing.Imaging.ImageFormat]::Jpeg);$image.Dispose()}"
- pause
复制代码
作者: ddrwin 时间: 2022-2-12 23:32
回复 14# pcl_test
版主大大太厉害了!谢谢!
作者: 5i365 时间: 2022-2-13 10:11
本帖最后由 5i365 于 2022-2-13 10:17 编辑
回复 14# pcl_test
感觉大侠分享, 刚刚试着改为了下面的ps代码来执行, 但是生成的文件和批处理在同一文件夹, 没有在 cd 转到的文件夹下
另外, 这个 $image.Dispose() 命令可以不用吗? 好像不加对代码也没影响- #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
- cd "C:\Users\Administrator\Desktop\新建文件夹"
- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')
- dir *.bmp |
- foreach{
- $image = [Drawing.Image]::FromFile($_.FullName)
- $image.Save($($_.BaseName + '.jpg'), [Drawing.Imaging.ImageFormat]::Jpeg)
- $image.Dispose()
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |