从bash重新生成Wordpress缩略图

时间:2012-09-17 15:56:04

标签: wordpress bash thumbnails

更改设置>后,我是否有一种简单的方法可以重新生成图像缩略图媒体>缩略图尺寸?

我知道有插件,但我有超过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。

1 个答案:

答案 0 :(得分:0)

看看imagemagick

它带有一个名为convert

的东西

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

所以

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然后使用原始源来获取图像的原因是因为我假设图像全部都在子文件夹中,这就是为什么解压缩会创建相同的目录结构和输出结果将覆盖/ opt / images-backup / images中的缩略图结果

你可能需要调整一下,但应该可以正常工作