0

ファイルをキャプチャして REST サーバーに送信し、ツールバーから PNG 拡張機能に保存してきましたが、現在では 50 万近くのファイルがあります。

最近、実際には PNG 形式ではなく base64 ストリーミング ファイルとして保存されていることがわかりました。

それらを変換できるPythonスクリプトがありますが、再帰的ではなく、ワイルドカードを使用できません。

ImageMagick によると、base64 ファイルは大きすぎる (最大 5K) ため、変換できません。

 IE;  /bin/base64-to-png.py <base64_file_name>.png <output_name.png>

ディレクトリ パス /mnt/s3/pages/ で、「ページ」には数千の番号の付いたフォルダがあります。

 IE; /mnt/s3/pages/100 

   "pages" subfolders are never more than 1 folder deep.
   The files are typically 5540_thumb.png, 5540_snapshot.png and 5540_crop.png 
   where the 5540 is the capture number.

フォルダー全体で再帰的にするためにBASHスクリプトラッパーが必要です。すべてのオリジナルをバックアップファイル(filename.b64)にコピーし、ワイルドカードを適切なパス/名前としてPythonスクリプトに渡し、ファイルを変換して出力ファイルを同じそれぞれに残しますフォルダーを作成し、mogrify を使用してそれらを圧縮します。

 IE;  base64-to-png.sh *_snapshot.b64 *_snapshot.png <compression number>

  should

    cp <file_name.png> <file_name>.b64
    /bin/base64-to-png.py <file_name.png> <file_name.png>
    mogrify -quality <compression number> -format png <file_name.png>
4

2 に答える 2

0

このスクリプトを試してください

#!/bin/bash
SEARCHPATH=$1
COMNUM=$2
FINDEXT="*.png"

for f in `find $SEARCHPATH -type f -name $FINDEXT` ; do
     #just get files name without extension
     fname=`echo $f | cut -d'.' -f1` 
     #perform operations
     cp $f ${fname}.b64
     /bin/base64-to-png.py $f $f
     mogrify -quality $COMNUM -format png $f

done

あなたはそれを次のように呼び出すことができます

$ base64-to-png.sh /somepath/tofind 100

param 1 : path where to find `.png` files 
param 2 : compression number.

/bin/base64-to-png.pyこれは、絶対パスで動作できることを前提としてい/somepath/somedir/somefile.pngます。somefile.png

警告: QA は行われていません。ご自身の責任で使用してください。

于 2012-10-05T06:49:54.507 に答える
0

ファイル名を png から base64 に変更します。

shopt -s グロブスター
shopt -s nullglob

*.png **/*.png のファイルの場合。行う
    if (file "${file}" | fgrep "ASCII" >/dev/null 2>&1); それから
        # ファイルの名前は '.png' ですが ASCII です。移動してください。
        b64name="${file%.*}.b64"
        mv -f "${file}" "${b64name}"

        # $b64name を $file に変換するコマンドを挿入

        #これならいけると思います
        base64 -d "${b64file}" > "${file}" || echo "${b64file} の変換に失敗しました"
        mogrify -quality -format png "${file}"
    フィ
終わり

などの理由によりglobstar、これにはbash 4.0以降が必要になると思います。あなたのバージョンを見つけることができますbash --version

base64 変換に python を使用することが不可欠な場合は、コマンドを自由に交換してください。

于 2012-10-05T18:48:52.417 に答える