Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Automatisch foto's comprimeren? (https://forum.scholieren.com/showthread.php?t=1250084)

Angmar 20-08-2005 18:07

[website] automatisch foto's comprimeren?!
 
Hallo daar :)

Ik heb een eigen website en forum waarvan de leden hun eigen foto's als avatar kunnen uploaden. Nou heb ik ervoor gezorgd dat ze foto's kunnen uploaden met een redelijk grote resolutie en van max 250 kb. Dit omdat velen waarschijnlijk niet weten hoe ze een foto kunnen verkleinen, terwijl ze vaak een of andere digitale foto willen uploaden met een redelijk grote resolutie. Die foto's worden automatisch verkleind doordat ik in m'n coding width="100" gebruikt heb, op die manier gaan de verhoudingen niet verloren. Maar de afbeelding is nu wel verkleind in afmetingen, maar blijft even zwaar! En 250kb is nu niet meteen weinig, als je 100 leden hebt kom je al makkelijk aan 25mb wat niet erg licht te verwerken is door de server... dus mijn vraag:

Weet er iemand of er een manier bestaat om foto's op je site automatisch te comprimeren, zodat bv een foto van 250kb wordt omgezet in één van 30kb ?! er zijn sites die dit alleszins toepassen, zoals groups.msn.com ... hoe zou je anders 100 foto's kunnen uploaden met maar 2 MB webruimte beschikbaar :)

thx!

12Trix 21-08-2005 01:10

Ik weet niet welke server side scripting taal je gebruikt? Voor mijn fotoboek gebruik ik een PHP functie om automatisch thumbnails van mijn foto's te maken. Die functie kun jij ook gebruiken (mits je PHP gebruikt):

http://nl2.php.net/manual/nl/functio...yresampled.php

Een afbeelding moet natuurlijk wel eerst volledig ge-upload zijn. Dan pas kun je de afbeelding verkleinen, en vervolgens opslaan. Met bijv. imagejpeg of het equivalent ervan voor een ander afbeeldingstype kun je het ook naar een bestand wegschrijven:
http://nl2.php.net/manual/nl/function.imagejpeg.php

Angmar 21-08-2005 02:33

oke thx, zal morgen eens naar kijken :) *geeuw*

12Trix 21-08-2005 11:23

Citaat:

Angmar schreef op 21-08-2005 @ 03:33 :
oke thx, zal morgen eens naar kijken :) *geeuw*
J.C.! Jij bent nog langer op geweest dan ik :p

Angmar 21-08-2005 12:10

Citaat:

12Trix schreef op 21-08-2005 @ 12:23 :
J.C.! Jij bent nog langer op geweest dan ik :p
zo ben ik eh :) mja hele nacht geprutst met coding, en ik weiger te gaan slapen voor alles perfect werkt :p

Angmar 21-08-2005 12:35

hmm ik snap niet heel veel van die site, er staat wat uitleg en onderaan allemaal toegevoegde notes? welke moet ik gebruiken, en wat moet ik ermee doen? :o

12Trix 21-08-2005 12:49

Citaat:

Angmar schreef op 21-08-2005 @ 13:35 :
hmm ik snap niet heel veel van die site, er staat wat uitleg en onderaan allemaal toegevoegde notes? welke moet ik gebruiken, en wat moet ik ermee doen? :o
Je hebt de volgende functie:
bool imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

Die kun je gebruiken om een kopie van een image te maken en deze gelijk te verkleinen.

Eerst moet je natuurlijk een image hebben die je gaat verkleinen. Het ge-uploade bestand dus.

Je kunt dan bijv. een van deze twee functies (zie manual voor de andere functies) gebruiken om een "image resource" te krijgen:
resource imagecreatefromgd2 ( string filename)
resource imagecreatefromjpeg ( string filename)

imagecreatefromgd2 heb ik zelf nog niet geprobeerd, maar ik neem aan dat deze functie gelijk kijkt wel type afbeelding "filename" is.

Je doet bijv.:
$src_im = imagecreatefromjpeg($uploadedfile)

Dan kun je $src_im gebruiken voor o.a. de functie imagecopyresampled.

Je maakt een image aan waarin de verkleinde kopie komt te staan, natuurlijk met de juiste afmetingen:

$dst_im = imagecreatetruecolor ($smallwidth, $smallheight)

Dan gebruik je imagecopyresampled:
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $smallwidth, $smallheight, $originalwidth, $originalheight)

Je hebt dan $src_im naar $dst_im gekopieerd, en verkleind tot $smallwidth en $smallheight. Je kunt gewoon 4 nullen invoeren, omdat je alles, dus vanaf de linkerbovenhoek van $src_im kopieert naar de linkerbovenhoek van $dst_im.


Alle tijden zijn GMT +1. Het is nu 16:02.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.