Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] objekte mit bilddaten serialisieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] objekte mit bilddaten serialisieren

    hallo!

    ich programmiere gerade eine gallerie um (hab sie vorher mit datenbankanbindung geschrieben)

    jetzt möchte ich die tabellen, als objekte abbilden, damit auch leute ohne mysql meine galerie verwenden können...
    dazu hab ich jetzt mal ne classe erstellt, die die daten hält
    PHP-Code:
    <?php
    class XImage {
         private 
    $tstamp "";
         private 
    $content_type "";
         private 
    $format "";
         private 
    $date "";
         private 
    $image null;
         private 
    $thumbnail null;
         private 
    $comment "";
         private 
    $viewed 0
         
        function 
    XImage($_tstamp$_content_type$_format$_date$_image$_thumbnail$_comment$_viewed){
              
    $this->tstamp $_tstamp;
              
    $this->content_type $_content_type;
              
    $this->format $_format;
              
    $this->date $_date;
              
    $this->image $_image;
              
    $this->thumbnail $_thumbnail;
              
    $this->comment $_comment;
              
    $this->viewed $_viewed;
        }
        
    function 
    getTimeStamp(){
            return 
    $this->tstamp;
        }
        
    function 
    getContentType(){
            return 
    $this->content_type;
        }
        
        function 
    getFormat(){
            return 
    $this->format;
        }        
        
        function 
    getImageDate(){
            return 
    $this->date;
        }
        
        function 
    getImage(){
            return 
    $this->image;
        }
        
        function 
    getThumbnail(){
            return 
    $this->thumbnail;
        }    
        
        function 
    getComment(){
            return 
    $this->comment;
        }    
        
        function 
    getViews(){
            return 
    $this->viewed;
        }    
    }
    ?>
    nach dem füllen mit bilddaten und allen anderen daten speichere ich die datei ab:
    PHP-Code:
    file_put_contents($dstserialize($ximg)); 
    wenn ich die daten wieder benötige, lade ich sie mir per
    PHP-Code:
    $ximg unserialize(file_get_contents($path_to.$id.".XImage")); 
    will ich nun aber das bild ausgeben lassen, dann rendert mir FireFox nur die url -> nehme ich an dass irgendetwas falsch läuft. bekomme aber KEINE fehlermeldung

    PHP-Code:
    Header("Content-type: ".$ximg->getContentType());
        echo 
    $ximg->getImage(); 
    im ganzen sieht die GET .php file so aus:
    PHP-Code:
    $id = isset($_GET["id"]) ? $_GET["id"] : "";
    $type = isset($_GET["type"]) ? $_GET["type"] : "";

    # id = filename
    include("XImage.class.php");
    $ximg unserialize(file_get_contents("C:/httproot/images/".$id.".XImage"));
    Header("Content-type: ".$ximg->getContentType());
    if (
    $type=="tn") {
            echo 
    $ximg->getThumbnail();
    }
    else{
        echo 
    $ximg->getImage();

    EDIT:
    hab auch schon versucht binär die datei zu speichern und zu laden, mit dem selben ergebnis!
    PHP-Code:
        $filename"C:/httproot/images/".$id.".XImage";
        
    $f=fopen($filename"rb");
        
    $contents fread ($ffilesize ($filename));
        
    fclose($f); 
        
    $ximg    unserialize($contents); 
    PHP-Code:
        $f=fopen($dst"wb");
        
    fputs($fserialize($ximg));
        
    fclose($f); 
    EDIT2:
    i found out that ALL 0x00 get replaced by 0x5C30 (\0) which changes not only the content but also the size of the image!

  • #2
    gelöst!
    bin wohl auf der leitung gestanden... brauch kein addslashes -> weg damit und es klappt

    Kommentar

    Lädt...
    X