web-dev-qa-db-ja.com

作成日に従ってjpgを並べ替え、単一のpdfに変換します

Macで、作成日に従って約2400 jpgを並べ替えるにはどうすればよいですか(つまり、stat -f %SB)ターミナル経由で、この順序で1つのPDFに変換しますか?

1つのjpgが今日の午後11時10分に作成され、もう1つが同じ分の午後11時10分以内に作成された場合はどうなりますか?作成日の秒数は考慮に入れることができますか?

3
Til Hund

ImageMagick convertを使用した簡単なコマンドラインが役に立ちます。

次のコマンドライン(14個のpngファイルがあるディレクトリ)でテストしたところ、pdfファイルのページごとに1つの画像があります。

convert  *.png out-parrot.pdf

ただし、convertの一部のバージョンでは問題が発生する可能性があります

Parrot4.4のconvertのバージョンで意図したとおりに機能します

$convert --version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org

ただし、Ubuntu 18.04.1 LTSconvertのバージョンでは機能しません(2019年2月まで)

$ convert --version
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org

このバージョンは、PDFファイルの書き込みが「許可されていません」

$ convert  *.png out-ubuntu.pdf
convert-im6.q16: not authorized `out-ubuntu.pdf' @ error/constitute.c/WriteImage/1037.

$ apt-cache policy imagemagick
imagemagick:
  Installed: 8:6.9.7.4+dfsg-16ubuntu6.4
  Candidate: 8:6.9.7.4+dfsg-16ubuntu6.4
  Version table:
 *** 8:6.9.7.4+dfsg-16ubuntu6.4 500
        500 http://se.archive.ubuntu.com/ubuntu bionic-updates/main AMD64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/main AMD64 Packages
        100 /var/lib/dpkg/status
     8:6.9.7.4+dfsg-16ubuntu6 500
        500 http://se.archive.ubuntu.com/ubuntu bionic/main AMD64 Packages

Ubuntuメーリングリストを介して私は次の答えを持っていました(PDFへの変換はImageMagickの脆弱性の問題のためにオフにされました)

これは、特にUbuntu 18.04 LTSのImageMagick変換のバグですか、それとも意図的にオフにされたpdfへの変換ですか?

変更は意図的なものでした。 https://usn.ubuntu.com/3785-1/ を参照してください

ありがとう、ジェレミー・ビチャ

1
sudodus

それはファイルシステムに依存します。たとえば、私のホストでは、4番目の拡張ファイルシステム(ext4)を使用しており、statはファイルについて次のように報告します。

$ touch foo; stat foo; rm foo
  File: 'foo'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc00h/64512d    Inode: 262155      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   ownerusername)   Gid: ( 1000/   ownerusername)
Access: 2017-06-21 14:28:16.150323827 -0700
Modify: 2017-06-21 14:28:16.150323827 -0700
Change: 2017-06-21 14:28:16.150323827 -0700
 Birth: -

したがって、最終変更時刻を 作成時刻は誤称のようなものです として使用できます。

find /path/to/images -type f -print0 -name \*.jpg | xargs -0 stat -c "%y|%n" | sort | awk -F'|' '{print $2}'

このやや面倒な構成では、最終変更時刻順にファイルのリストが表示されます(名前に|が含まれるファイルがない場合)。

このリストを確認して確認したら、Imagemagickのconvertツールを使用してPDFを組み立てることができます。

convert <<list of files>> outputfile.pdf 

または、一度にすべてを実行するには:

convert $(find /path/to/images -type f -print0 -name \*.jpg | xargs -0 stat -c "%y|%n" | sort | awk -F'|' '{print $2}') outputfile.pdf
3
DopeGhoti

ImageMagickをインストールします。 JPG画像が~/imagesにあり、ファイル名にスペース(または\[*?)が含まれておらず、ディレクトリが~/combinedであると仮定します。

convert -combine -append $(ls -tr ~/images/*.jpg) ~/combined/all.jpg

または

  convert -combine -append $(ls -tr ~/images/*.jpg) ~/combined/all.pdf

画像のサイズが同じでない場合は、警告が表示されます。 -appendは画像を上から下に結合します。 +appendに変更すると、画像が左から右に結合されます。

時間:ls -lは時:分までの時間を示しますが、Linuxはアクセス、変更、および経過時間/変更時間をナノ秒まで追跡します。したがって、ls -trによる並べ替えは、ほんのわずかな秒数を占めます。

0
Deathgrip