Board logo

标题: [文件操作] 求个代码 ImageMagick 批处理生成图片的缩略图 [打印本页]

作者: ganjie    时间: 2008-12-10 14:12     标题: 求个代码 ImageMagick 批处理生成图片的缩略图

最近下载了一个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 编辑 ]
作者: a794685135    时间: 2008-12-10 19:36

你需要 md thumb吧

不知道是不是
作者: ganjie    时间: 2008-12-11 09:35

md thumb? 这是?可以说得更清楚一些吗
作者: ganjie    时间: 2008-12-12 09:47

没有人回贴呀,高手们可以教我一下吗?谢谢了!
作者: wxcute    时间: 2008-12-12 10:05

修改?
你的代码是不能运行?还是有时会出错?

如果总是让人猜测你要干什么,问题何时能解决阿。
作者: ganjie    时间: 2008-12-12 10:42

代码应该是写错了,下图是系统提示的

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

[ 本帖最后由 ganjie 于 2008-12-12 11:19 编辑 ]
作者: wxcute    时间: 2008-12-12 16:55

没有用过这个软件,以下代码未测试
  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
复制代码

作者: ganjie    时间: 2008-12-12 17:14

测试了一下,它没有生成"%%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 编辑 ]
作者: tireless    时间: 2008-12-13 10:08

用 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 编辑 ]
作者: wxcute    时间: 2008-12-13 10:19     标题: 回复 8楼 的帖子

去掉我在 7 楼 %im_convert% 两边的百分号 % 试试。
作者: ganjie    时间: 2008-12-13 10:35

哦,原来如此,还有下面这段代码
if not exist "%%a\thumb" md "%%a\thumb"

"%%a文件夹已经有了一个thumb,它却还是要在thumb文件夹下新建thumb,而且运行一次就再thumb下新建一个thumb,我去找了资料,可是还是弄不好,不让它再次新建thumb文件夹
作者: tireless    时间: 2008-12-13 10:46     标题: 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. )
复制代码

作者: ganjie    时间: 2008-12-13 10:52

经过测试可以了!^_^




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2