2012-09-17 80 views
1

改變設置>媒體>縮略圖大小後,是否有一種簡單的方法可以讓我重新生成圖像縮略圖?從bash重新生成Wordpress縮略圖

我知道這裏有插件,但我有超過30K的圖像。即使是阿賈克斯人也要永遠完成。

我在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";}'); 

假設原來的縮略圖大小150×150是和新尺寸爲610x200。

回答

0

看看ImageMagick的

它帶有一種叫做轉換

轉換$ PATH/$文件調整大小X150 -define JPEG:

所以

程度= 28KB $輸出/ $文件
sudo yum install imagemagick 

sudo apt-get install imagemagick 

步驟1。包含的全部圖像的備份

tar -cvzf images-backup.tar.gz images 

第二步

mkdir /opt/image-test 
cd /original/path/containing/images/ 
find . -type d -exec mkdir -p /opt/images/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然後使用的原因原始來源獲得圖像轉換是因爲我假設圖像也都在子文件夾中,這就是爲什麼untarring會創建相同的目錄結構和輸出結果將覆蓋/ opt/images-backup/images中的文件與縮略圖結果

你可能需要調整一下,但應該正常工作

+0

謝謝你。我最終做了類似的事情,但方式稍有不同。我編輯我的問題,包括我寫的腳本,如果任何人想要它。不過,我仍然不知道如何更新數據庫中的所有帖子以使用新的縮略圖。由於post_meta表的結構方式,簡單的搜索和替換不起作用。任何方式在這個? – kakashigr

+0

可以看看這個http://wordpress.org/support/topic/joining-postmeta-and-posts-table-to-get-image-urls,最好的地方來問問他們或者可能是一個新的wordpress問題這裏針對你所具有的db結構問題 – Vahid