2012-09-17 2 views
1

설정> 미디어> 미리보기 이미지 크기를 변경 한 후 이미지 축소판을 다시 생성 할 수있는 간단한 방법이 있습니까?bash에서 Wordpress 미리보기를 다시 생성하십시오.

나는이 플러그인을 알고 있지만 이미지는 30k 이상 있습니다. 아약스조차도 끝내기까지 영원히 걸릴 것입니다.

저는 iconv, ffmpegthumbs 등과 같은 것들을 실행할 수 있도록 VPS CentOS에 있습니다. 그래서 저에게 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입니다.

그래서

정도 = 28킬로바이트의 $ 출력/$ 파일 :

답변

0

은 무엇인가라는 변환

변환 $ 경로/$ 파일 -resize X150 -define JPEG와 함께 제공 ImageMagick를

를 보라

sudo yum install imagemagick 

또는

sudo apt-get install imagemagick 

1 단계.위의 2 단계 백업

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

관련 문제