Toon posts:

plaatjes resizen (imagemagick)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een fotoalbum gemaakt dat automatisch de directory's uileest en de plaatjes en thumbnails etc. Dit werkt allemaal correct.

Om het laden allemaal wat te versnellen verklein ik eerst altijd mijn foto's met easy thumbnails naar .... * 1000 en de thumbnails naar ....*100.

Nu wil ik dit automatisch laten doen door een zip-file met foto's te uploaden en dan het volgende script aan te roepen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
// $zip=$_post['zip'];
// $album=$_post['album'];
$zip = 'test.zip';
$album = 'test';
system("mkdir fotoalbum/$album");
system("mkdir fotoalbum/$album/thumbs");
system("unzip $zip");
system("cp *.jpg fotoalbum/$album/");
system("mv *.jpg fotoalbum/$album/thumbs/");
system("mogrify -resize 1330x1000 fotoalbum/$album/*.jpg");
system("mogrify -resize 133x100 fotoalbum/$album/thumbs/*.jpg");


Het werkt, maar het resizen van de plaatjes duurt lang, bij een aantal plaatjes (bij elkaar 14mb) is de server al 5 minuten bezig. Nu heb ik dus een paar vragen:

1. Kan het resizen sneller.

2. Kan er tussendoor aangegeven worden hoe ver het is. Ik weet dat dit eigenlijk niet kan met php omdat eerst het hele script wordt uitgevoerd op de server, maar er bestaat ook al zoiets als een upload-meter.

Joris

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13-05 06:47
Wat betreft punt 1: waarschijnlijk niet; ImageMagick is gewoon niet zo heel snel (maar het resizen gebeurt dan ook in goede kwaliteit).

Wat betreft punt 2: op de huidige manier is het lastig om de status weer te geven, maar als je de plaatjes een voor een resizet (met afzonderelijke system-commando's dus) dan kun je tussendoor status informatie doorsturen.

Verwijderd

Topicstarter
de plaatjes een voor een resizen kan wel, dat lukt me ook.
Maar als ik dan na elk plaatje bijvoorbeeld de naam van het plaatje neerzet, dan werkt hij nog eerst alles af, en geeft hij daarna alle namen van de plaatjes weer.

Is er trouwens ook een ander programma dat hetzelfde doet als imagemagick, maar sneller, en dan eventueel met mindere kwaliteit?

p.s. volgens mij duurt elk plaatje appart resizen nog langer dan alle plaatjes in 1 keer.

[ Voor 18% gewijzigd door Verwijderd op 16-02-2005 14:30 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-05 22:46

Janoz

Moderator Devschuur®

!litemod

Om de status werkend te krijgen zul je je output moeten flushen en in je html rekening moeten houden met dat deze de pagina al af moet beelden waneer deze pas half binnen is. Dat je nu alles in 1x ziet is omdat of de pagina wel stap voor stap aangemaakt wordt, maar in 1 keer wordt verstuurd, of dat deze wel stap voor stap binnenkomt, maar dat de browser hem pas laat zien waneer deze helemaal binnen is (tables zijn hierin bijvoorbeeld een grote boosdoener)

Puntje twee kan heel goed kloppen. Het blijft echter een afweging wat handiger is. Langzamer maar met progress indicatie, of sneller en maar hopen dat het nog loopt.

Is het niet een idee om het resizen gewoon lokaal te doen via een scriptje of wat dan ook? ImageMagick zou je ook lokaal kunnen instaleren, en wat je nu met system calls doet gewoon in een .bat of shellscriptje zetten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Het is ook de bedoeling dat andere mensen met een fotoalbum op mijn server er gebruik van kunnen maken. Is het echt zoveel sneller om een script te maken, en dan aan te roepen via php?

Verder is de pagina alleen maar de php-code die ik gegeven heb, verder niks, dus geen tabellen waardoor er gewacht moet worden op de hele pagina.

Joris

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13-05 06:47
Verwijderd schreef op woensdag 16 februari 2005 @ 14:41:
Het is ook de bedoeling dat andere mensen met een fotoalbum op mijn server er gebruik van kunnen maken. Is het echt zoveel sneller om een script te maken, en dan aan te roepen via php?
Nee, dat is niet sneller. Maar eerlijk gezegd had ik ook niet verwacht dat alle bestanden in één keer verwerken veel sneller zou zijn.
Verder is de pagina alleen maar de php-code die ik gegeven heb, verder niks, dus geen tabellen waardoor er gewacht moet worden op de hele pagina.
Tja, het kan echt, maar je moet maar even spelen met flush() en het versturen van hele paragraphs (elk op een aparte regel) om het goed werkend te krijgen. Het is sowieso geen onderdeel van enige standaard dus hoe het precies werkt wisselt per browser (maar het is wel in praktisch alle gangbare browsers werkend te krijgen).

Verwijderd

Topicstarter
Oke, bedankt voor de reacties, en ik zal het eens gaan proberen werkend te krijgen.
Voor de grap eens imagemagick op mijn xp-pc geinstalleerd, nooit gedacht dat ik nog een keer een dos-programma zo handig zou vinden.
Voor mijn eigen foto's is dat veel sneller en kan ik gewoon een batch-file schrijven.
Maar voor de linux-server zal ik even naar flush() kijken. Ik kom er vast wel uit.
Pagina: 1