PFZ.nl - PHP Community: output imagejpeg - PHP - Forum - PFZ.nl - PHP Community

Je kunt niet antwoorden op dit topic
#1 05-02-2012 12:50
  • phpeter
  • Groep: Forumleden
  • Posts: 10
  • Actief sinds: 15-12-2006
Ik heb een class gemaakt die kijkt wat voor plaatje het is (jpeg, png etc.) vervolgens resize ik het plaatje met een bepaald percentage. En daarna output ik het plaatje zonder het op te slaan. Dit werkt perfect.
Maar wanneer ik het een tweede keer op de zelfde pagina probeer laat hij alleen nog steeds maar alleen plaatje 1 zien.
Of als ik het plaatje in een tabel zet ook dan zie ik alleen het plaatje het tabel wordt niet ge-echot.

Wat kan ik hier aan doen?? Hoe kan ik er voor zorgen dat het wel goed werkt. btw ik ben nieuw met classes en wil meteen van af het begin netjes proberen te werken dus opmerking/tips zijn altijd welkom.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php

class SimpleImage {
 
   var $image;
   var $image_type;
   var $orgWidth;
   var $orgHeight;
 
   function __construct($filename) {
 
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      
      if( $this->image_type == IMAGETYPE_JPEG ) {
 
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
 
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
 
         $this->image = imagecreatefrompng($filename);
      }
   }
         
   function output() {
 
      imagejpeg($this->image);

   }
   
   function scale($scale) {
      $this->orgWidth = imagesx($this->image);
         $this->orgHeight = imagesy($this->image);      
                    
      $width = $this->orgWidth * $scale/100;
      $height = $this->orgHeight * $scale/100;
      $this->resize($width,$height);
   }
 
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->orgWidth, $this->orgHeight);
      $this->image = $new_image;
   }       
 
}

      $image = new SimpleImage('http://smbjorklund.no/sites/smbjorklund.no/files/pictures/1/apple_mac_os_x_10.5_leopard_1024x768_1.jpg');
       $image->scale(50);
       $image->output();
       unset ($image);
       
// tweede plaatje, deze doet het niet

      $image1 = new SimpleImage('http://smbjorklund.no/sites/smbjorklund.no/files/pictures/1/snow-leopard1.jpg');
       $image1->scale(50);
       $image1->output();
       unset ($image1);
  ?>

#2 05-02-2012 15:56
Als een script een afbeelding terug geeft (dus niet een adres of HTML) kan deze maar één afbeelding per keer weergeven. Afbeeldingen zijn binary en niet zoals met HTML dat je meerdere in één keer kan weergeven.

Je zult het script dus meerdere keren moeten aanroepen met andere parameters :) maar let wel.
Afbeelding manipulatie is best intens, dus doe dit niet als je het script vaak aanroept!
"fouten verifieer je niet met een "; DROP DATABASE" commando. " Arnoud Engelfriet (Security.nl)

#3 07-02-2012 14:49
  • phpeter
  • Groep: Forumleden
  • Posts: 10
  • Actief sinds: 15-12-2006
Beetje laat maar ik wilde je nog bedanken voor je reactie. maar zo als altijd kom ik van het ene in het andere probleem.

Ik heb de geresizede plaatjes weer gegeven door het script op te roepen in een <img>. dit werkt perfect. Nou wil ik mijn bezoeker het plaatje goed laten keuren voordat ik het opsla. wanneer ze het plaatje goed gekeurd hebben wil ik het opslaan.

Maar om het plaatje op te slaan kan ik op de een of andere manier het al geresizede plaatje opslaan?? of moet ik het orginele plaatje resizen en dan opslaan, dit kost natuurlijk meer capaciteit.


Inloggen wachtwoord vergeten? Aanmelden