login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Image size

Offline santacrack - 15/04/2007 17:02
Avatar van santacrackNieuw lid Ik heb deze code
  1. <?
  2. function ubb($bericht)
  3. {
  4. $bericht = preg_replace("#\[img\](.*?)\[/img\]#si",'<img alt="" src=\\1 />',$bericht);
  5. //...
  6. }
  7. ?>


Nu deze images komen in geposte berichten maar ik heb maar 500 px voorzien voor deze reacties... Dus als deze images groter zijn dan dan 500px is er een probleempje. Brengt heel men pagina constructie in de war.

Nu wil ik dat deze image gecontroleerd word en automatisch word verkleint... Dat verkleinen weet ik hoe , maar ik weet niet hoe ik de image moet checken of hij niet te groot is... 

9 antwoorden

Gesponsorde links
Offline Rens - 15/04/2007 17:07
Avatar van Rens Gouden medaille

Crew algemeen
PHP.net: getimagesize
Offline Rik - 15/04/2007 17:09
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Kan je hier wat mee?
  1. <?php
  2. list($width, $height) = getimagesize('urlvanhetplaatje');
  3.  
  4. if ($width > 200 || $height < 200) {
  5. // Te groot resizen!
  6. }
  7. ?>
Offline santacrack - 15/04/2007 17:09 (laatste wijziging 15/04/2007 17:10)
Avatar van santacrack Nieuw lid @rens en Boukefalos
ja dat weet ik ook wel... maar ik kan dat toch niet gebruiken tussen de preg_replace() ....
Offline Ultimatum - 15/04/2007 17:12
Avatar van Ultimatum PHP expert Nee, je moet eerst controleren of het te groot is. Zonee weergeven dmv preg_replace zoja error..
Offline Rik - 15/04/2007 17:17 (laatste wijziging 15/04/2007 17:18)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je kan ook eerst alle plaatjes er uit filteren en dan voor ieder apart bekijken of de grootte goed is:
  1. <?php
  2. function ubb($bericht)
  3. {
  4. $bericht = preg_match_all("#\[img\](.*?)\[/img\]#si", $bericht, $matches);
  5. foreach ($matches[0] as $key => $value) {
  6. $url = $matches[1][$key];
  7. list($width, $height) = getimagesize($url);
  8. if ($width > 200 || $height < 200) {
  9. $new_width = // Hier berekenen
  10. $new_height = // Hier berekenen
  11. str_replace($value, '<img src="' . $url . '" width="' . $new_width . '" height="' . $new_height . '" />', $bericht)
  12. } else {
  13. str_replace($value, '<img src="' . $url . '" />', $bericht);
  14. }
  15. }
  16. }
  17. ?>


Edit:
Niet helemaal typo vrij, maar dat kan je zelf wel fixen denk ik. 
Offline santacrack - 15/04/2007 17:21
Avatar van santacrack Nieuw lid bedankt Boukefalos!
Offline Button - 15/04/2007 17:37 (laatste wijziging 15/04/2007 17:38)
Avatar van Button PHP ver gevorderde ik heb die getimagesize ook al een keer gebruikt om mijn images te resize in mijn reacties, maar deze vertraagde het geheel met een 1à2à3-tal seconden! hangt (wss) af van de server waar de image opstaat.. (-> men kan bij mij gewoon url plaatsen die linkt naar de image) (heb dan ook een functie in javascript geschreven maar als dan werd alleen maar de eerste image geresized)
Offline JBke - 15/04/2007 18:10 (laatste wijziging 15/04/2007 18:16)
Avatar van JBke PHP gevorderde
  1. <?php
  2. $x = imagesx($image);
  3. $y = imagesy($image);
  4.  
  5. if($x > $maxx || $y > $maxy) {
  6. verklein;
  7. }
  8. ?>

simpele manier om eindpunt x en y te bepalen.

iets complexer maar houd rekening met breedte / hoogte verhouding

  1. <?php
  2. //--- achterhaal de eigenschappen van de foto
  3. list($breedte, $hoogte, $image_type) = getimagesize($path . $_FILES['userfile']['name']);
  4.  
  5. //--- bepaal de verhouding tussen hoogte en breete
  6. $image_ratio = $hoogte / $breedte;
  7.  
  8. //--- bereken op basis van de raio de nieuwe hoogte
  9. if($image_ratio > 1){
  10. $rs_breedte = $user_breedte;
  11. $rs_hoogte = $user_breedte * $image_ratio;
  12. }
  13. else{
  14. $rs_hoogte = $user_breedte;
  15. $rs_breedte = $user_breedte / $image_ratio;
  16. }
  17. //--- maak resize image aan in het geheugen
  18. $resize = imagecreatetruecolor($rs_breedte, $rs_hoogte);
  19. //--- bron om te resizen
  20. $source = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
  21. //--- foto resize
  22. imagecopyresized($resize, $source, 0, 0, 0, 0, $rs_breedte, $rs_hoogte, $breedte, $hoogte);
  23. // foto opslaan
  24. imagejpeg($resize, $path . $_FILES['userfile']['name']);
  25.  
  26. $image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
  27. $size = getimagesize($path . $_FILES['userfile']['name']);
  28. ?>


wel aanpassingen nodig heb het gecopiëerd van een script dat ik gebruik om afbeeldingen te uploaden met gewenste grootte en watermerk.

Grtz.
Offline delta_004 - 16/04/2007 08:10
Avatar van delta_004 Onbekend Zoekfunctie....
Er zijn hier al genoeg topics over geweest
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.234s