Image resizer (function)

Door Hendel Berg, 20 jaar geleden, 3.730x bekeken

Deze functie heb ik geschreven omdat ik met mijn zoekcapaciteit (oké, je kunt daaraan twijfelen) geen functie of script naar mijn zin kon vinden.

Wat is naar mijn zin? Deze functie! Waarom?
1. Het is een functie
2. Het behoudt automatisch de originele schaalverdeling hoogte/breedte
3. Het werkt met gif, jpg, jpeg èn png
4. Je kunt plaatjes ook vergroten

Opbouwende kritiek is altijd welkom!

Update:
29-2: Parameter-beschrijving verduidelijkt.

Gesponsorde koppelingen

PHP script bestanden

  1. image-resizer-function

 

Er zijn 10 reacties op 'Image resizer function'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Terence Hersbach
Terence Hersbach
20 jaar geleden
 
0 +1 -0 -1
foutje in je parameter-beschrijving:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
 * resizeImage (function)
 *
 * @Author Henry v.d. Berg [email protected]      
 *
 * Deze functie wijzigt de grootte van een JPG/PNG/GIF plaatje
 *
 * @param String   $sSrcPath      Locatie van het originele bestand, eindigend op de bestandsnaam incl. extentie
 * @param String   $sDestPath     Locatie waar het ge-resized bestand wordt opgeslagen, ZONDER bestandsnaam of extentie, eindigend op '/'
 * @param int      $iDestWidth    Maximale breedte van het uiteidelijke bestand
 * @param int      $iDestHeight   Maximale hoogte van het uiteindelijke bestand
 * @param String   $iDestQuality  De kwaliteit van het uiteindelijke bestand in procenten, standaard 75%
 *
 * @return boolean
 */

een getal is een int. een string is een object dus met hoofdletter.

Ook is het handig om er @ voor te zetten (bij zend kan je dan bij de aanroep van de functie gelijk zien wat je mee moet geven)
PHP erik
PHP erik
20 jaar geleden
 
0 +1 -0 -1
String een object? Dit is PHPhulp hè, niet Javahulp. Type-casten doe je toch ook met (string) en niet (String). PHP != Java (helaas m.b.t. objecten/types).
Jurgen assaasas
Jurgen assaasas
20 jaar geleden
 
0 +1 -0 -1
Waarom verwerk je deze functie niet in een klasse? Zodat je ook andere functies in kan zetten, zoals watermerk. Zo kun je nog genoeg functies verzinnen die hier in toepasselijk zijn.
Hendel Berg
Hendel Berg
20 jaar geleden
 
0 +1 -0 -1
@Terence: Niet zozeer een fout, mijn gedachte erachter was iets anders. Maar ik ben het met je eens dat jouw manier duidelijker is, dus ik heb het aangepast!

@Jurgen: Daar heb ik over na zitten denken. Waarschijnlijk komt dat nog wel. Voorlopig vind ik dit aardig gelukt voor mijn eerste OOP-functie.


Wat vinden jullie verder inhoudelijk van de functie?
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
paar dingen:

getimagesize(); is een hele slechte functie!
Het parst een image en is dus erg gevoelig voor XSS e.d.
bovendien werkt het alleen op daadwerkelijke bestanden.

voor de $x / $y heb je imagesx(); / imagesy();
Deze werken ook op gd-resources!

getimagesize(); ['mime'] is dus ook niet betrouwbaar... En kan gemakkelijk met valse headers het bos in gestuurd worden...
Dus deze controle is waardeloos!

Hoe dan wel?
Dat is wat ingewikkelder! Je zult binair de headers moeten matchen welke .gif / .jpg / .png standaard hebben...
Als je dit een beetje begrijpt kan je dus ook zero-byte hack's eruit vissen en animated gif's e.d. vaststellen...

En je weet dat:
dat gif palleted is... 255 kleurtjes + 1 alpha
jpg truecolor maar GEEN alpha
png truecolor en evt. alpha channels heeft (kan je binair ook vast stellen)

En verder heb je inderdaad nog de extensie...
echter doe je dit 100% overkill! split(); en array_pop(); ??

http://www.php.net/manual/en/function.strrchr.php
is je vriend! evt. met substr(); als je punt kwijt wilt raken...

Mijn resize functie is 10 regels geloof ik...
Kijk eens naar OOP.

Daar zal een functie nooit!:
- image type bepalen
- resizen
- opslaan

dat zijn dan zoiezo 3 functies al binnen een class...
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
Je bent vrij jouw resize functie te posten Lode.
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
geen probleem... maar ik werk wel OOP...
dus:

basis: truecolor + transparency
__construct maakt van alles iig truecolor met transparantie, zelfs bij jpg!
en een geldige resource...

en dan kan je er alles mee wat je wilt...
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
voordat we het over mijn skills/werk hebben kan je eens kijken naar:

http://www.phphulp.nl/php/scripts/4/1291/
Hendel Berg
Hendel Berg
20 jaar geleden
 
0 +1 -0 -1
@Lode: ik snap de link met de kleur klasse niet echt. En ik word nu toch wel érg nieuwsgierig naar al het moois wat jij hebt gemaakt!
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
@Hendel...
zal eens wat online gooien voor mijn portfolio... ;-)

Help graag mensen omdat ik het al meer dan 10 jaar doe en ergens ook zo geleerd heb gedeeltelijk. Dus geen probleem.
Maar mijn produktie-codes worden nooit opensource...

Zal eens kijken morgen... heb wel wat leuke dingen ;-)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. image-resizer-function

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.