Versio

opslaan plaatje

Overzicht Reageren

Peter  paul

peter paul

06/02/2012 14:25:44
Quote Anchor link
Hallo,

Ik zit met het volgende probleem. Ik probeer een script te maken dat een plaatje resized met een bepaald percentage. Dat is gelukt. Zie code beneden. Ik echo deze dan op het scherm om aan de gebruiker te laten zien wat er gebeurt is. Als hij tevreden is. Kan het plaatje worden opgeslagen. Nou ik het plaatje al geresized heb is het mogelijk om dat plaatje op te slaan?? Zo ja, hoe doe ik dit?
Of moet ik het originele plaatje opnieuw resizen voor dat ik het kan opslaan, want dit kost natuurlijk weer extra capaciteit?

PS. Ik ben net begonnen met OOP dus als er opmerkingen/tip zijn dan hoor ik deze graag.

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
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
<?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);
      
?>
Gewijzigd op 07/02/2012 20:18:20 door Peter paul
 
PHP hulp

PHP hulp

17/05/2012 13:03:06
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Peter  paul

peter paul

07/02/2012 15:42:02
Quote Anchor link
BUMP
 
Obelix en Idefix

Obelix en Idefix

07/02/2012 15:51:04
Quote Anchor link
Ben niet thuis in OOP, maar je code lijkt me in ieder geval onvolledig (je eindigt met een { )

Een bestand wat wordt geupload sla ik doorgaans op via de wijze zoals beschreven op http://php.net/manual/en/function.move-uploaded-file.php
 
Kris Peeters

Kris Peeters

07/02/2012 17:58:29
Quote Anchor link
(Wel ja ... de vragensteller geeft slechts de relevante code. Uiteraard moet elke accolade gesloten worden)


Uploaden is niet meer nodig; de image staat al op de server.
Wat je nodig hebt, is de functie imagejpeg() om die resource op te slaan.

En dan nog de interactie met de client.
De gebruiker moet via een formulier (al is het slechts 1 knop) zijn akkoord kunnen geven.

In hidden input velden steek je dan de gegevens (url file, afmetingen, ...)

Jij stuurt dan die post door naar de php-logica die imagejpeg() aanroept (ergens in een methode van de class).

Kan je tonen hoe je de class aanspreekt ($mijn_var = new SimpleImage()... )?

Van waar komt de file?


Sla je data op in een DB?
Is er een user systeem?
...

(kwestie van een beetje in te schatten wat de vereisten zijn)
 
Peter  paul

peter paul

07/02/2012 20:21:24
Quote Anchor link
hmm er is denk ik iets fout gegaan bij het posten ik wilde wel een wat vollediger stuk geven van mijn code. zie eertse post ik heb hem veranderd.

Je zegt de image staat al op de server?? Ik heb nog niets opgeslagen of iets dergelijks. maar kan ik wel bij het eerder ge resizede plaatje komen om hem vervolgens op te slaan?
 
Kris Peeters

Kris Peeters

07/02/2012 20:45:35
Quote Anchor link
Peter paul op 07/02/2012 20:21:24:
Ik heb nog niets opgeslagen of iets dergelijks.


Waar staat de originele image? Staat die op jouw server of pluk je die van andere sites?
 
Peter  paul

peter paul

07/02/2012 22:39:46
Quote Anchor link
Ik zou graag willen dat mensen een plaatje kunnen uploaden of een url kunnen in geven. Ik ben begonnen met een plaatje van het internet daar haal ik ze dus ook vandaan.
 
Kris Peeters

Kris Peeters

07/02/2012 23:53:09
Quote Anchor link
Okay.

Eventjes puur conceptueel, zonder iets van praktische code.

Kijk, de eerste keer uploadt de gebruiker dus het origineel.
Op dat moment staat die file dus op de server.

Ik zou dus niet aanraden dat de gebruiker de foto nog eens moet uploaden. De originele foto staat op de server, je kan dat origineel evengoed opslaan op de server.

Trouwens, tegen dit moment heb je de aangepaste resource ook ter beschikking. Je zou evengoed die resource ook kunnen opslaan.

bv. beide in een temp folder.


Je hebt de GD library al eens doen werken, de upload is al eens gebeurd, ik zie niet in waarom dit dubbel moet gebeuren.

Het enige wat jij (php-logica op de server) nog moet weten, is een goedkeuring; dat is weinig informatie.

Sla dus ergens de gegevens op, in een database; eventueel in een session.
Zorg dat je een formulier naar de gebruiker stuurt (nu ja, een OK en Annuleer-knop) waarin je een in een hidden field een link legt met de images (het origineel en de aangepaste) (bv. de id van het record).
Bij een goedkeuring doe je een move van de file, dit vergt weinig van een server, net zoals een cut/paste op je pc ook weinig van je processor vraagt.
Bij een annulering vernietig je de file(s).


---
(EDIT)
Nu, het hangt er eigenlijk ook van af wat je van plan bent indien je geen goedkeuring krijgt.
Wat doe je dan?
Een beter percentage aanbieden of zo? In dit geval in het interessant het origineel bij te houden.
Misschien is het niet nodig het origineel bij te houden; hangt er van af hoe je het precies afhandelt.

Kan je je hier in vinden?
Iemand andere ideeën?
Gewijzigd op 08/02/2012 00:01:33 door Kris Peeters
 



Overzicht Reageren

Get Adobe Flash player