使用Automator中的Applescript将图像与ImageMagick结合

时间:2016-03-06 10:12:48

标签: shell imagemagick applescript automator

所以我有一个PDF文件,我正在使用Automator从每张幻灯片生成JPG文件。然后我想循环遍历这些图像并从中创建并排的照片。所以第1页和第2页将创建一个图像,然后是第3页和第4页,依此类推......到目前为止,我有一个Applescript动作,输入是所有图像文件:

on run {input, parameters}

    set selectedFiles to {}

    repeat with i in input
        copy (POSIX path of i) to end of selectedFiles
    end repeat

    return selectedFiles
end run

我想要做的功能是这个,这是一个ImageMagick函数,两个合并到彼此相邻的图像:

do shell script "convert " +append 01.jpg 02.jpg 01&2.jpg

如何在上面的Applescript中添加此功能?

或者使用Shell脚本可能更容易?

1 个答案:

答案 0 :(得分:0)

我有点匆忙,所以不是我最好的代码,但你可以在bash这样做:

#!/bin/bash
# pdfsheets
#
# Passs the name of a PDF as parameter and get it as a bunch of double-page spreads called "sheet-0.jpg" ... "sheet-n.jpg"
#
# Pick up parameter
pdf=$1
echo "Processing document: $pdf"

# Split document into individual pages each as JPEG
convert "$pdf" page-$$-%03d.jpg

# Get names of pages into array and see how many we got
pages=( $(ls page-$$-*.jpg) )
npages=${#pages[@]}
echo DEBUG:npages:$npages

# Check if odd number of pages - synthesize empty white one at end if odd
if [ $((npages%2)) -ne 0 ]; then
   lastpage=${pages[@]:(-1)}
   echo DEBUG:lastpage:$lastpage
   newlast=$(printf "page-$$-%03d.jpg" $npages)
   convert "$lastpage" -threshold -1 $newlast
   pages=( $(ls page-$$-*.jpg) )
   npages=${#pages[@]}
fi
s=0
for ((i=0;i<npages;i+=2)) do
   a=${pages[i]}
   b=${pages[((i+1))]}
   out=$(printf "sheet-%d.jpg" $s)
   echo Converting $a and $b to $out
   convert $a $b +append $out
   ((s++))
done

像这样运行并获得如下输出:

./pdfsheets document.pdf
Processing document: document.pdf
DEBUG:npages:5
DEBUG:lastpage:page-49169-004.jpg
Converting page-49169-000.jpg and page-49169-001.jpg to sheet-0.jpg
Converting page-49169-002.jpg and page-49169-003.jpg to sheet-1.jpg
Converting page-49169-004.jpg and page-49169-005.jpg to sheet-2.jpg