Login Hasło

#1 2010.05.07 16:18:57

clave
Nowy użytkownik
Zarejestrowany: 2010.05.07
Posty: 3

modyfikacja image (thumbs)

chciałbym zrobić thumb'y dla różnej wielkości tapet,
chwilowo robie to tak:

Kod:

convert image.format -resize 235x1 thumb_image.format

choć nie spełnia moich wymagań, bo jeden obrazek jest `wyższy` a drugi `niższy` (chodzi o ratio), ale mają tylko prawidłową szerokość
http://195.211.2.7/~clave/wall_thumbs/14.jpg http://195.211.2.7/~clave/wall_thumbs/32.jpg

o wiele WIĘKSZY przykład http://195.211.2.7/~clave/

więc wpadłem na pomysł, aby wszystkie zmniejszyć do takiego minimalnego rozmiaru aby dało się z nich wyciąć zawartość o rozmiarze np. 240x240px

dzięki temu nie będą `spłaszczone` czy `rozciągnięte` na rzecz obciętych około 25% (ramy)

problem mam w tym, że nie wiem jak ustawić `kursor` na środek zdjęcia i wyciąć fragment (-120,-120)x(120,120) do nowego pliku

używam tylko imagemagick

===========================================
dobra przesadziłem
podam prostrzy sposób:

if height < width then
   cut image_name.format -width=height(center) tmp_image_name.format
   convert tmp_image_name.format -resize 240x240 ./thumbs/image_thumb.format
else
   na odwrót

oczywiście jest to "wolne" tłumaczenie.. jak wygląda na kod bash'a, nie wiem hmm

Ostatnio edytowany przez clave (2010.05.07 18:20:52)

Offline

 

#2 2010.05.08 10:00:30

jaszczomppoziomka
Użytkownik
Zarejestrowany: 2009.10.12
Posty: 87

Re: modyfikacja image (thumbs)

http://www.imagemagick.org/script/montage.php
http://ultra.ap.krakow.pl/~bar/kursbasha/main.html
wędka nie ryba, zgodnie z chińskim przysłowiem smile
napisz coś, jak nie będzie działać to wrzuć i będziemy myśleć
oczywiście pracujesz na kopii obrazków?

Offline

 

#3 2010.05.08 15:58:40

clave
Nowy użytkownik
Zarejestrowany: 2010.05.07
Posty: 3

Re: modyfikacja image (thumbs)

PS: "oczywiście pracujesz na kopii obrazków?" a jakbym śmiał na oryginałach big_smile

udało mi się to zrobić w PHP

Kod:

<?php
        # -1 bo plik create_thumb.php
        $count = (int) ( shell_exec( 'ls | wc -l' ) - 1 );

        while ( $count ) {
                $center = 0;
                $pattern = imagecreatetruecolor( 240, 240 );

                $base = getimagesize( $count .'.jpg' );

                if ( $base[ 1 ] < $base[ 0 ] ) {
                        shell_exec( 'convert '. $count .'.jpg -resize x240 tmp_'. $count .'.jpg' );

                        $base = getimagesize( 'tmp_'. $count .'.jpg' );

                        # srodek szerokosci dla wysokosci
                        $center = (int) ( ( $base[ 0 ] - $base [ 1 ] ) / 2 );
                } else {
                        shell_exec( 'convert '. $count .'.jpg -resize 240x tmp_'. $count .'.jpg' );

                        $base = getimagesize( 'tmp_'. $count .'.jpg' );

                        # srodek szerokosci dla wysokosci
                        $center = (int) ( ( $base[ 1 ] - $base [ 0 ] ) / 2 );
                }

                $image = imagecreatefromjpeg( 'tmp_'. $count .'.jpg' );

                if ( $base[ 1 ] < $base[ 0 ] ) {
                        imagecopy( $pattern, $image, 0, 0, $center, 0, 240, 240 );
                } else {
                        imagecopy( $pattern, $image, 0, 0, 0, $center, 240, 240 );
                }


                $file = 'thumb_'. $count .'.jpg';
                imagejpeg( $pattern, $file );

                $count--;
        }
?>

czas pracy dla jednego pliku o rozmiarze 1920x1080:

Kod:

clave@serim ~/www/test $ time { /usr/bin/php-cgi create_thumb.php; }
X-Powered-By: PHP/5.2.13-pl0-gentoo
Content-type: text/html


real    [b]0m3.034s[/b]
user    0m2.783s
sys     0m0.116s

zasoby: 193.928 plików...
proponowany czas pracy (dla wszystkich): 6 dni 8 godzin ~

ma ktoś ochotę ulepszyć? smile (zmniejszyć czas oczekiwania)

Ostatnio edytowany przez clave (2010.05.08 16:18:49)

Offline

 

#4 2010.05.08 18:41:40

Moebius
o¤°`°¤o,¸¸¸,o¤°
Skąd: /dev/tty1
Zarejestrowany: 2007.02.26
Posty: 202
System: Gentoo
Fluxbox: ist Krieg!

Re: modyfikacja image (thumbs)

Kod:

 convert -size 300x300 FILENAME_HERE -thumbnail x200 -resize '200x<' -resize 50% -gravity center -crop 100x100+0+0 +repage FILENAME_HERE

edit:

Kod:

[/home/moebius/testing_shit] > find . -type f -iname '*.jpg' | wc -l
6513
[/home/moebius/testing_shit] > time find . -type f -iname '*.jpg' -exec convert -size 300x300 '{}' -thumbnail x200 -resize '200x<' -resize 50% -gravity center -crop 100x100+0+0 +repage '{}' \;
735,26s user 90,45s system 158% cpu 8:40,20 total

Ostatnio edytowany przez Moebius (2010.05.08 19:13:36)


Teraz, gdy już nauczyliśmy się latać w powietrzu jak ptaki, pływać pod wodą jak ryby, brakuje nam tylko jednego: nauczyć się żyć na ziemi jak ludzie.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson