login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Image resize

Offline arian - 06/07/2006 22:37 (laatste wijziging 06/07/2006 22:43)
Avatar van arianHTML interesse Hoi,

Hoe kan ik al een bestaand bestand openen, dan copieren en resizen?...

Ik heb al hier gekeken:
http://nl2.php....esized.php en
hhttp://nl2.php.net/manual/en/function.imagecopyresampled.php

Alleen eerlijk gezegd snap ik niet veel van...:s

Dus als iemand mij opweg zou willen helpen, zou dat heel fijn zijn

Alvast bedankt,
Arian

16 antwoorden

Gesponsorde links
Offline DJ_Cecemel - 06/07/2006 23:18
Avatar van DJ_Cecemel Nieuw lid [b]Je kunt op google zoeken JPEG RESIZER,
het is een wel een exe bestand dat je niet hoeft te instaleren,
HANDIG DUS.


je kopierd dan gewoon de bestaande afbeelding naar jouw pc en de resizer doet de rest en het is een heel simpel programma als je een beetje engels kunt.

Grtz:p
Offline haytjes - 06/07/2006 23:27 (laatste wijziging 06/07/2006 23:28)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
  1. <?php
  2. // The file
  3. $filename = 'test.jpg';
  4. $percent = 0.5;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8. /* aan de browser zeggen dat hij een image zal krijgen. */
  9.  
  10.  
  11. // Get new dimensions
  12. list($width, $height) = getimagesize($filename);
  13. /* hier krijg je de oude grootte van de image */
  14. $new_width = $width * $percent;
  15. $new_height = $height * $percent;
  16. /* hier vermenigvuldigt het script de orginele grootte met 0,5. Hierdoor wordt de image 50% kleiner */
  17.  
  18. // Resample
  19. $image_p = imagecreatetruecolor($new_width, $new_height);
  20. /* hierdoor heb je mooiere images */
  21. $image = imagecreatefromjpeg($filename);
  22. /* gaat de orginele image gaan halen */
  23. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  24. /* maakt de nieuwe image aan, met de breedte, hoogte, orginele image ... */
  25. // Output
  26. imagejpeg($image_p, null, 100);
  27. /* dit stuurt de nieuw aangemaakte image naar de browser */
  28. ?>


ik heb bij de code wat comments geplaatst, zodat je het beter begrijpt. Als je nog vragen hebt, stel ze maar
Offline arian - 07/07/2006 10:02
Avatar van arian HTML interesse :D Dit klopt, ik krijg nu dus ook het plaatje weergegeven, maar hoe sla ik hem vervolgens op in een map?? 
Offline Thomas - 07/07/2006 11:02
Avatar van Thomas Moderator PHP.net:
bool imagejpeg ( resource image [, string filename [, int quality]] )

The filename argument is optional, and if left off, the raw image stream will be output directly. To skip the filename argument in order to provide a quality argument just use an empty string (''). By sending an image/jpeg content-type using header(), you can create a PHP script that outputs JPEG images directly.

Oftewel: Vul in de 2e parameter het volledige (interne) pad in waar je dit bestand wilt opslaan. Zorg ook dat de folder waarin je het plaatje wilt zetten de juiste rechten heeft.
Offline arian - 07/07/2006 11:16
Avatar van arian HTML interesse
Citaat:
imagejpeg($image_p, null, 100);


Dit staat in het scriptje van haytjes, Dus als ik die 'null' dus verander in het pad, en er 'bool' aan het begin van de regel zet, moet het goed gaan?
Offline b4nkr0bz0r - 07/07/2006 11:46
Avatar van b4nkr0bz0r PHP gevorderde bool geeft het type aan, denk dus dat hij false retourneerd als de functie niet succesvol is uitgevoerd, en bij true natuurlijk wel.

die null (resource) als 2e parameter, klopt denk ik niet, het moet ook een string zijn. dus vul daar gewoon je path in zoals FangorN al duidelijk aangaf, en zog dat het de juiste rechte heeft en dan werkt het. (denk ik)
Offline arian - 07/07/2006 12:04 (laatste wijziging 07/07/2006 12:04)
Avatar van arian HTML interesse Als ik dit invul: bool imagejpeg ($image_p [, string '../thumb' [, int 100]] );
Dan doet hij het niet hoor , want dan zegt hij: Parse error: parse error in /home/httpd/vhosts/***.nl/httpdocs/***/upload.php on line 115
(line 115 is dus die ene regel)
Offline MindPrison - 07/07/2006 12:14 (laatste wijziging 07/07/2006 12:14)
Avatar van MindPrison PHP gevorderde
  1. <?php
  2. imagejpeg($image_p, '../thumb');
  3. ?>

Enkel dit invullen, de rest is overbodig.
Offline arian - 07/07/2006 14:02 (laatste wijziging 07/07/2006 14:02)
Avatar van arian HTML interesse Kan het niet met dit ?
  1. <?php
  2. $fopen=fopen("bestand.txt","w");
  3. fwrite($fopen,"inhoud");
  4. fclose($fopen);
  5. ?>


dan had ik er er zoiets van gemaakt:

  1. <?php
  2. // Thumbnail
  3. $width = 200;
  4. $height = 200;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8.  
  9. // Get new dimensions
  10. list($width_orig, $height_orig) = getimagesize($filename);
  11.  
  12. if ($width && ($width_orig < $height_orig)) {
  13. $width = ($height / $height_orig) * $width_orig;
  14. } else {
  15. $height = ($width / $width_orig) * $height_orig;
  16. }
  17.  
  18. // Resample
  19. $image_p = imagecreatetruecolor($width, $height);
  20. $image = imagecreatefromjpeg($filename);
  21. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  22.  
  23.  
  24. $fopen=fopen("../thumb/".$naam.".jpg","w");
  25. fwrite($fopen, imagejpeg($image_p, null, 100));
  26. fclose($fopen);
  27. ?>


Maarja, dat werkt weer niet 
Offline Thomas - 07/07/2006 14:48
Avatar van Thomas Moderator Je moet het volledige pad ingeven denk ik, je kunt niet met relatieve paden werken (dus "../" mogen er niet in voorkomen lijkt me).

Gebruik $_SERVER['DOCUMENT_ROOT']."/het/pad/naar/je/upload/directory/naam_van_het_bestand.ext"

En als dit niet werkt, druk je bovenstaande string af, om te kijken wat er aan scheelt.
Offline arian - 07/07/2006 15:00
Avatar van arian HTML interesse Dat is het niet... de juiste code van het plaatje wordt niet in het bestand gezet... want als je dan zo'n bestand opent met kladblok staat er 'resource id#7' oid...
Offline Thomas - 07/07/2006 15:43
Avatar van Thomas Moderator Dat kan allerlei oorzaken hebben.
Probeer je probleem eens in stukken op te delen, anders weet je niet waar het schip strandt...

#1: plaatje opvragen en uitlezen
#2: plaatje resizen (en in eerste instantie naar het scherm afdrukken met header())
#3: plaatje opslaan met imagejpeg(), waarin je aangeeft waar het plaatje moet worden opgeslagen

Verdiep je in de materie (functies + user contributed notes op php.net) - daar staat echt alles wat je wilt weten, maar je moet het natuurlijk wel proberen te begrijpen.
Offline Ultimatum - 07/07/2006 16:21
Avatar van Ultimatum PHP expert vraagje, als ik het script gebruik krijg in mijn browser het volledige path naar image te zien.., dat komt door header('Content-type: image/jpeg'); want als ik het weghaal krijg ik alleen maar errors 

heb nu op php.net gezocht, maar er staat niet hoe ik dit probleem kan oplossen 
Offline Thomas - 07/07/2006 16:33 (laatste wijziging 07/07/2006 16:37)
Avatar van Thomas Moderator Het script?
Welk script?

Als je zo'n content-type-header gebruikt, dan kun je vervolgens een plaatje afdrukken naar het scherm (met fopen, fwrite, etc. of fpassthru()).

Op die manier kun je dus plaatjes via php afdrukken (<img src="image.php?show=1">plaatje</a>), waarbij image.php een script is waarin zo'n header-regel staat.

NB: Als het script meer dan enkel het plaatje "naar output stuurt", of spaties of regelovergangen bevat, zal het script waarschijnlijk niet goed werken, omdat je daarmee de formattering van je content-type om zeep helpt. Wanneer je dus zoiets gebruikt als header("Content-type: image/jpeg"), kun je een plaatje afdrukken, en verder niets.

Volgens mij was een goede manier om fouten hierin te debuggen de volgende: Gebruik als content-type "text/plain" in plaats van "image/jpeg" - dan kun je PHP-errors zien (die er dan ongetwijfeld zullen zijn, wanneer je geen plaatje te zien krijgt).
Offline Ultimatum - 07/07/2006 17:01
Avatar van Ultimatum PHP expert ik bedoelde dat script op pagina 1 en iid als ik dat header("Content-type: image/jpeg"); weglaat krijg ik een shitload met errors 
Offline Maarten - 07/07/2006 22:47
Avatar van Maarten Erelid @Hierboven: zoiets heet dan debugging.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.232s