Thumbnail maken van origineel

Pagina: 1
Acties:

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Hallo,

Ik hier een script in PHP en die leest foto's uit een database!
Hij print ze netjes op de pagina, maar als iemand nu dus een foto van 150 bij 200 upload dan is ie veeeel te groot voor op de pagina!
Hoe kan ik nou realtime op die pagina die foto verkleinen?
Of kan dit niet?

Alvast bedankt,
Dennus

Owner of DBIT Consultancy | DJ BassBrewer


  • Raynman
  • Registratie: Augustus 2004
  • Nu online
Ik weet niet wat je precies doet met je script, maar als je dat plaatje (thumbnail) vaker gaat laten zien kun je beter 1x bij het uploaden een verkleining maken en opslaan en niet realtime een thumbnail maken.

Hoe je plaatjes kunt verkleinen is makkelijk via de search/google/op php.net te vinden.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 05-11 19:33
Je zou naar de GD functies kunnen kijken. Daarmee is dat goed te doen.

Vooral imagecopyresampled zal je wel op de goede weg helpen. Er staan verder wel genoeg voorbeelden bij waar je mee aan de slag kunt.

[ Voor 50% gewijzigd door Michali op 09-11-2006 10:41 ]

Noushka's Magnificent Dream | Unity


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:38
Met imagecreatefromstring() maak je een afbeelding resource in GD van de afbeelding in je database, en met bovengenoemde imagecopyresampled kun je deze verkleitn kopieeren naar een 2de img resource welke je maakt met imagecreatetruecolor().

Ik zou het verkleinde versie wel opslaan, zoals ook al gezegd. GD is niet bepaald geheugen-vriendelijk dus continue plaatsjes scalen gaat niet prettig werken.

[ Voor 25% gewijzigd door frickY op 09-11-2006 10:45 ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Jij zoekt http://php.net/imagecopyresampled :)

En ik zou toch wel een soort serverside caching gebruiken, door de door die functie gegenereerde thumbnails in een map te gooien.

Stukje client-side caching:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
header('Expires: ' . date('D, j M Y H:i:s', time() + (60*60*24*31)) . ' GMT');
header('Cache-Control: Public');
header('Pragma: Public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($resizedimagename)).' GMT');
header('Content-type: image/jpeg');
header('Content-Length: '.filesize($resizedimagename));

$headers = apache_request_headers();
if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($resizedimagename))) {
    // Client's cached version matches current, send '304 Not Modified'.
    header('HTTP/1.0 304 Not Modified');
} else {
    print file_get_contents($resizedimagename);
}

Of zo :)

[ Voor 9% gewijzigd door CodeCaster op 09-11-2006 10:46 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...