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

[文件操作] 求个代码 ImageMagick 批处理生成图片的缩略图

[复制链接]
发表于 2008-12-10 14:12:36 | 显示全部楼层 |阅读模式
最近下载了一个ImageMagick 安装完毕后测试成功,如:im_convert -resize  200x200 8.jpg 2.jpg 图片2.jpg 可以缩小到200x200 ,现在小弟想在把目录下面的所有子目录里的图片文件如*.jpg、*.png、*gif等图片缩小然后放进个自的thumb文件夹中,如C盘下建有2008这个文件夹,而2008里有AB 、02两个文件夹,AB和02这两个子目录中都有图片,用im_convert -resize这个命令将图片缩小后,AB这个缩略图就放在AB这个文件夹下面的thumb文件夹中,同理02这个缩略图就放在02这个文件夹下面的thumb文件夹中,谢谢!

[ 本帖最后由 ganjie 于 2008-12-12 15:52 编辑 ]
发表于 2008-12-10 19:36:06 | 显示全部楼层
你需要 md thumb吧

不知道是不是
 楼主| 发表于 2008-12-11 09:35:48 | 显示全部楼层
md thumb? 这是?可以说得更清楚一些吗
 楼主| 发表于 2008-12-12 09:47:05 | 显示全部楼层
没有人回贴呀,高手们可以教我一下吗?谢谢了!
发表于 2008-12-12 10:05:09 | 显示全部楼层
修改?
你的代码是不能运行?还是有时会出错?

如果总是让人猜测你要干什么,问题何时能解决阿。
 楼主| 发表于 2008-12-12 10:42:38 | 显示全部楼层
代码应该是写错了,下图是系统提示的

如果无法修改就照着我上述的贴子编个代码,谢谢!

[ 本帖最后由 ganjie 于 2008-12-12 11:19 编辑 ]
发表于 2008-12-12 16:55:24 | 显示全部楼层
没有用过这个软件,以下代码未测试
  1. @echo off
  2. set "route=%cd%"
  3. for /f "delims=" %%i in ('dir /ad /b /s "%route%"') do (
  4.  if not exist "%%i\thumb" md "%%i\thumb"
  5.  cd "%%i"
  6.  for /f "delims=" %%j in ('dir /a-d /b "%%i\*.jpg" "%%i\*.png" "%%i\*.gif"') do (
  7.   %im_convert% -resize 200x200 "%%j" "%%i\thumb\%%j"
  8.  )
  9. )
  10. pause
复制代码
 楼主| 发表于 2008-12-12 17:14:50 | 显示全部楼层
测试了一下,它没有生成"%%j" 的缩略图,而是直接打开浏览了"%%j"

我在网上找了一个批量生成某目录下所有PNG图像文件的缩略图
  1. for %%f in (*.jpg) do im_convert -resize 200x200 "%%f" "thumb\%%~nf.png"
复制代码
这个代码却可以成功

而下面这个是却老是提示出错,提示如下图
  1. @echo off
  2. set "route=%cd%"
  3. for /f "delims=" %%i in ('dir /ad /b /s "%route%"') do (
  4.  for /f "delims=" %%j in ('dir /a-d /b "%%i\*.jpg" "%%i\*.png" "%%i\*.gif"') do (
  5. im_convert -resize 200x200 "%%j" "thumb\%%~nj.png"
  6. )
  7. )
  8. pause
复制代码


[ 本帖最后由 ganjie 于 2008-12-13 07:59 编辑 ]
发表于 2008-12-13 10:08:56 | 显示全部楼层
用 ImageMagick 里面的 mogrify.exe,支持批量并保持文件名(convet.exe 虽然也支持批量,但批量的情况下无法保持文件名):
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a:d /s /b') do (
  3.   if not exist "%%a\thumb" md "%%a\thumb"
  4.   mogrify -path "%%a\thumb" -thumbnail 200x200 *.gif *.png *.jpg
  5. )
复制代码

[ 本帖最后由 tireless 于 2008-12-13 10:15 编辑 ]
发表于 2008-12-13 10:19:23 | 显示全部楼层

回复 8楼 的帖子

去掉我在 7 楼 %im_convert% 两边的百分号 % 试试。
 楼主| 发表于 2008-12-13 10:35:15 | 显示全部楼层
哦,原来如此,还有下面这段代码
if not exist "%%a\thumb" md "%%a\thumb"

"%%a文件夹已经有了一个thumb,它却还是要在thumb文件夹下新建thumb,而且运行一次就再thumb下新建一个thumb,我去找了资料,可是还是弄不好,不让它再次新建thumb文件夹
发表于 2008-12-13 10:46:31 | 显示全部楼层

Re #11

  1. @echo off
  2. for /f "delims=" %%a in ('dir /a:d /s /b') do (
  3.   if "%%~na" neq "thumb" (
  4.     if not exist "%%a\thumb" md "%%a\thumb"
  5.     mogrify -path "%%a\thumb" -thumbnail 200x200 *.gif *.png *.jpg
  6.   )
  7. )
复制代码
 楼主| 发表于 2008-12-13 10:52:07 | 显示全部楼层
经过测试可以了!^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 09:28 , Processed in 0.021255 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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