2

[設定] > [メディア] > [サムネイル サイズ] を変更した後、画像のサムネイルを簡単に再生成する方法はありますか?

このためのプラグインがあることは知っていますが、30k 以上の画像があります。ajax でさえ、完了するまでに永遠に時間がかかります。

私は VPS CentOS を使用しているので、iconv、ffmpegthumbs などを実行できます。bash からこのタスクを実行する方法はありますか?

更新 1。

これは、私が仕事をするために書いたスクリプトです。実行するには、画像を含むフォルダーにいる必要があります。

#! /bin/bash
# Copyright Synvi Group (http://www.synvigroup.com)
# Custom script to generate wordpress thumbnails for smokingd
# Dependencies: Imagemagick, rename, coreutils
echo Checking if sgthumbs already exists...
rm -rf sgthumb &
wait
echo Checking if list file already exists...
rm -f  list &
wait
echo Generate list of files...
ls -1 --file-type | grep -v -e -[0-9][0-9][0-9]x[0-9][0-9][0-9] | grep -v -e -[0-9][0-9][0-9][0-9]x[0-9][0-9][0-9] | grep -v -e -[0-9][0-9][0-9]x[0-9][0-9][0-9][0-9] | grep -v -e -[0-9][0-9][0-9][0-9]x[0-9][0-9][0-9][0-9] | grep -v -e -[0-9][0-9][0-9]x[0-9][0-9] | grep -v -e -[0-9][0-9]x[0-9][0-9][0-9] | grep -v -e -[0-9][0-9]x[0-9][0-9] > list &
wait
echo Create sgthumb directory...
mkdir sgthumb &
wait
echo Copying files...
xargs -a list cp -t sgthumb/ &
wait
cd sgthumb
echo Generating thumbnails...
echo Processing jpg files..
mogrify -resize '610x200^' -gravity center -crop 610x200+0+0 +repage *.jpg &
wait
echo Processing png files..
mogrify -resize '610x200^' -gravity center -crop 610x200+0+0 +repage *.png &
wait
echo Appending the new size to filenames...
rename .jpg -610x200.jpg *.jpg &
wait
rename .png -610x200.png *.png &
wait
echo Fixing permissions...
chown smokingd:smokingd *
wait
chmod 777 *
wait
echo Moving thumbnails to main directory...
cp -p *.jpg ../
wait
cp -p *.png ../
wait
echo Cleaning up..
cd .. 
wait
rm -rf sgthumb
wait
rm list
wait
echo Done!

ここで、USER はファイルを所有するユーザーであり、PERMISSIONS はファイルの正しいユーザーです。

古い投稿で新しいサムネイルを使用するには、データベースを更新する必要があります。古い投稿は 150x150 のサムネイルを使用しており、使用されているサムネイルの名前には -150x150 が追加されています。

更新 2。

次のクエリは正常に機能しました。

UPDATE wp_postmeta SET meta_value = REPLACE (  
meta_value,  
'-150x150.jpg";s:5:"width";s:3:"150";s:6:"height";s:3:"150";}',  
'-610x200.jpg";s:5:"width";s:3:"610";s:6:"height";s:3:"200";}');  

元のサムネイル サイズが 150x150 で、新しいサイズが 610x200 であると仮定します。

4

1 に答える 1

0

imagemagickを見てください

convertと呼ばれるものが付属しています

convert $path/$file -resize x150 -define jpeg:extent=28kb $output/$file

それで

sudo yum install imagemagick

また

sudo apt-get install imagemagick 

手順 1. バックアップ用のすべてのイメージを含む既存のフォルダーを tar します。

tar -cvzf images-backup.tar.gz images

ステップ2

mkdir /opt/image-test
cd /original/path/containing/images/
find . -type d -exec mkdir -p /opt/images/test/{} \;

上記は、新しい image-test フォルダーの現在のパスに存在するすべてのフォルダーを作成することです

#!/bin/bash

    path="/path/to/current-images"
    output="/opt/image-test/images"

       for files in `find $path -name \*.\* -print`
       do
        convert $path/$file -resize x150 -define jpeg:extent=28kb $output/$file
       done

私はこれをテストしていませんが、画像を /opt/images に解凍し、元のソースを使用して画像を変換した理由は、画像がすべてサブフォルダーにもあると想定していたため、解凍すると同じディレクトリ構造が作成され、出力結果は、サムネイルの結果で /opt/images-backup/images 内のファイルに上書きされます

あなたは混乱を微調整する必要があるかもしれませんが、うまくいくはずです

于 2012-09-17T17:41:56.453 に答える