[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何将bmp图片文件另存为/转换成jpg图片文件

本帖最后由 pcl_test 于 2016-12-14 22:22 编辑

因为公司有严格的规定,不可以下载或使用任何非公司软件
而公司又没有合适的软件,将3mb的bmp图片转换为200k的jpg图片

我想到的办法是 将bmp文件用windows自带图片软件mspaint.exe打开并另存为jpg文件
但是图片有几千张,以后可能会更多
所以想求助是否可以采用bat程序执行
要怎样写代码

对mspaint的接口不了解。但用powerpoint肯定可以。 如果电脑没ppt那就不晓得了。

TOP

  1. //&cls&dir /b *.bmp|cscript -nologo -e:jscript "%~f0"&pause&exit/b
  2. var files = WScript.StdIn.ReadAll().split(/\r\n/);
  3. for (var i=0; i<files.length; i++){
  4.     var img = new ActiveXObject('WIA.ImageFile');
  5.     var imgps = new ActiveXObject('WIA.ImageProcess');
  6.     img.LoadFile('.\\'+files[i]);
  7.     imgps.Filters.Add(imgps.FilterInfos('Convert').FilterID);
  8.     imgps.Filters(1).Properties('FormatID').Value = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
  9.     var img = imgps.Apply(img);
  10.     img.SaveFile('.\\'+files[i].replace(/(.+)\.[^\.]+$/,'$1')+'.jpg');
  11. }
复制代码
1

评分人数

TOP

我是来劝楼主换公司的。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

公司的电脑不能插U盘么?

TOP

太感谢pcl_test,真是太好了.

公司的电脑不可以连接任何电子设备,包括给手机充电
公司不允许使用外来软件是为了产权的保护问题, 我可以理解的,有被罚的经历.

再次感谢pcl_test,不知道我什么时候可以学到这种程度
是什么语言编写的阿

TOP

  1. 'Convert bmp file(batch) type to JPG
  2. 'http://www.experts-exchange.com/questions/21969652/Convert-bmp-file-batch-type-to-JPG.html
  3. ' File Name:BmpToJpg.vbs
  4. Const xlHtml = 44: Dim Args, pPath
  5. Set Args = WScript.Arguments
  6. If Args.Count <> 1 Then WScript.Quit
  7. If LCase(Right(Args(0), 4)) <> ".bmp" Then WScript.Quit
  8. pPath = WScript.ScriptFullName & "\..\"
  9. With CreateObject("Excel.Application")
  10. With .Workbooks.Add(1)
  11. With .ActiveSheet
  12. .Pictures.Insert(Args(0)): .Shapes(1).Cut
  13. .PasteSpecial "Picture (JPEG)"
  14. End With
  15. .SaveAs pPath & "Temporary.htm", xlHtml: .Close False
  16. End With
  17. .Quit
  18. End With
  19. With CreateObject("Scripting.FileSystemObject")
  20. .CopyFile pPath & "Temporary.files\image001.jpg", _
  21. Replace(oPath, ".bmp", ".jpg", 1, -1, 1)
  22. .DeleteFile pPath & "Temporary.htm"
  23. .DeleteFolder pPath & "Temporary.files", True
  24. End With
复制代码
1

评分人数

『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

为楼主推荐一工具,  比较专业的

图片处理工具 ImageMagick , 带命令行工具
http://www.imagemagick.org/script/index.php

支持200+种格式互相转换
http://www.imagemagick.org/script/formats.php

命令行工具批处理代码示例
http://www.webhek.com/batch-optimize-images-script

TOP

本帖最后由 yu--zz5337 于 2015-11-28 15:21 编辑

回复 7# yu2n
感谢7楼的热心帮助.不过好像不行,没有成功.
感谢8楼的热心帮助.不过公司里不可以安装任何网络软件的,所以应该不行.
不过还是收藏了,可以在我自己的computer上用

TOP

不知道能不能单纯用bat就能解决的

TOP

回复 10# yu--zz5337

不能

TOP

本帖最后由 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"
)

除非你的公司自己去开发一个这样的命令行工具,  恐怕没什么好办法了

TOP

感谢aa77dd@163.com 和 pcl_test 的回答.

TOP

  1. @echo off
  2. rem win7及以上系统运行
  3. 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()}"
  4. pause
复制代码

TOP

回复 14# pcl_test


    版主大大太厉害了!谢谢!
喜欢钻研批处理

TOP

返回列表