1

Многие решения указывают на использование mogrify, что отлично подойдет, если оно будет частью реализации jode узла. Все, что мне нужно сделать, это изменить размеры моих изображений и сохранить имена файлов, но поместить их в отдельную папку с измененным размером. Вот что я делаю здесь (в CoffeeScript, как плагин для DocPad статического сайта генератора):Узел ImageMagick resize не сохраняет имя файла

# Export Plugin 
module.exports = (BasePlugin) -> 

    im = require 'imagemagick' 

    # Define Plugin 
    class ImageMagickPlugin extends BasePlugin 

     # Plugin name 
     name: 'imagemagick' 

     im.resize 
     srcPath: './src/files/images/source/*.jpg' 
     dstPath: "./src/files/images/resized/.jpg" 
     width: 256 
     , (err, stdout, stderr) -> 
     throw err if err 
     console.log "resized some files to fit within 256" 

Результатом является то, что мои изображения изменяется должным образом, и поместить в нужную папку, но сами имена «-0.jpg, -1.jpg, -2.jpg» и так далее. Я действительно пишу это для нашего собственного использования, а не для серьезного плагина для DocPad, хотя я думаю, что когда он работает хорошо, мы можем определенно изменить его для общего использования.

Я ценю любую помощь!

Благодаря

ответ

0

Я изменил код так:

# Export Plugin 
module.exports = (BasePlugin) -> 

    im = require('imagemagick') 

    # Define Plugin 
    class ImageMagickPlugin extends BasePlugin 
    # Plugin name 
     name: 'imagemagick' 
     config: 
     source: "images" 
     suffix: "_resized" 
     width: 256 

     writeAfter: (opts,next) -> 
     docpad = @docpad 
     config = @config 
     docpad.getDatabase().forEach (document) -> 
      attr = document.attributes 
      if attr.extension is 'jpg' and attr.relativeDirPath is config.source 
      srcPath = './src/files/' + attr.relativePath 
      dstPath = './out/' + config.source + "/" + attr.basename + config.suffix + ".jpg" 
      im.resize 
       srcPath: srcPath 
       dstPath: dstPath 
       width: config.width 
      , (err, stdout, stderr) -> 
       throw err if err 
       console.log "File resized: " + attr.filename 
     next() 

Таким образом, вы перебираете файлы ищет JPG файлы в ./src/files/images/ и вы пишете малоформатную версию непосредственно в ./out/images/ с измененным именем: foo.jpg изменено в размере foo_resized.jpg. Делая это, вы не «загрязняете» свои файлы src.

Если вы просто хотите, чтобы заменить исходные изображения, змененными те, в ./out/images/, вы можете просто определить пустую строку суффикса в docpad.coffee:

plugins: 
    imagemagick: 
    suffix: "" 
    width: 300 

или просто установить его в объект конфигурации плагина!

+0

Удивительный, спасибо вам столько Дхармы! У меня сегодня должен быть момент, чтобы проверить это. Отметьте это как полное пост-тестирование :) –

+0

Это сработало отлично. Большое вам спасибо за ваше простое и аккуратное решение! –