【问题标题】:Regenerate Wordpress Thumbnails from bash从 bash 重新生成 Wordpress 缩略图
【发布时间】:2012-09-09 21:15:15
【问题描述】:

在更改设置 > 媒体 > 缩略图大小后,我有没有一种简单的方法可以重新生成图像缩略图?

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

【问题讨论】:

    标签: wordpress bash thumbnails


    【解决方案1】:

    看看 imagemagick

    它带有一个叫做转换的东西

    转换 $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
    

    第二步

    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 中的文件

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

    【讨论】:

    • 谢谢你。我最终做了类似的事情,但方式略有不同。如果其他人想要的话,我编辑了我的问题以包含我编写的脚本。但是我仍然不知道如何更新数据库中的所有帖子以使用新的缩略图。由于 post_meta 表的结构方式,简单的搜索和替换不起作用。有什么办法吗?
    • 可以看看这个wordpress.org/support/topic/…,最好的地方可能是问他们,或者可能是一个新的wordpress问题,专门针对你的数据库结构问题
    猜你喜欢
    • 2013-09-11
    • 2019-04-10
    • 2018-08-18
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    相关资源
    最近更新 更多