speichern von bildern überprüfen

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

  • speichern von bildern überprüfen

    hallöle, ich bin der neue

    mit folgendem scrip:
    PHP-Code:
    <?PHP
     $image 
    imagecreatefromjpeg($originalbild.".jpg");
     
    $image1 imagecreatetruecolor($breite,$hoehe);
     
    $farbe_body=imagecolorallocate($image1,255,255,255);
     
    imagecopyresized($image1$image,$dstx,$dsty,$srcx,$srcy,$dstw,$dsth,$srcw,$srch);
     
    imagejpeg($image1,$bildname.".jpg",$quality);
     if (
    file_exists($bildname.".jpg")){
        echo 
    "&gespeichert=ja&";
     } else{
        echo 
    "&gespeichert=nein&";
     }
    ?>
    speichere ich ein neues kleines bild von einem großen originalbild.
    die variablen werden dabei von flash übergeben, was auch einwandfrei funzt. sobald die variable gespeichert=ja in flash ankommt, wird das bild in flash eingeladen. jetz ist es aber so, das manchmal kein bild, oder nur ein halbes geladen wird (nach erneutem laden ist das bild dann okay).
    hier seht ihr ein beispiel: www.flactory.de/temp/test.jpg

    also meine frage nun, kann es sein, das wenn eine datei existiert, sie noch nicht komplett gespeichert ist? und wenn ja, wie kann ich sicherstellen, das sie komplett ist, und ich sie einladen kann?

    wäre für jeden hinweis dankbar
    gruß, smirgel

  • #2
    Suspekt, suspekt ...

    Natürlich existiert die Datei bereits während sie geschrieben wird, aber ansich sollte es gar nicht soweit kommen, da ja imagejpeg abgerabietet sein muß, wenn der IF beginnt - suspekt, suspekt ...

    $originalbild und $bildname müssen unterschiedlich sein, aber ich denke das hast Du schon gecheckt.

    PHP-Code:
    <?PHP
     $image 
    imagecreatefromjpeg($originalbild.".jpg");
     
    $image1 imagecreatetruecolor($breite,$hoehe);
     
    $farbe_body=imagecolorallocate($image1,255,255,255);
     
    imagecopyresized($image1$image,$dstx,$dsty,$srcx,$srcy,$dstw,$dsth,$srcw,$srch);
     
    imagejpeg($image1,$bildname.".jpg",$quality);

    // füg das mal ein
    ImageDestroy($image1);

     if (
    file_exists($bildname.".jpg")){
        echo 
    "&gespeichert=ja&";
     } else{
        echo 
    "&gespeichert=nein&";
     }
    ?>
    Dann probier mal nach dem ImageDestroy einen sleep(2); einzubauen. Nur um zu sehen ob sich die Sachlage verbessert hat.

    Kommentar


    • #3
      hi, und vielen dank erstmal.

      ImageDestroy($image1); scheint nicht wirklich was zu bringen. allerdings klappt das mit dem sleep schon besser. nur ich denke wenn der server ausgelastet ist, kommt es dann evtl auch wieder zu problemen.

      sollte es aber doch noch eine möglichkeit geben, zu überprüfen, ob die datei komplett gespeichert ist, wäre das echt klasse. so kostet das ja leider auch überflüssige zeit.

      aber mit sleep läuft das zumindest bisher super. vielen dank
      gruß, smirgel

      Kommentar


      • #4
        Das geht mir nicht in den Kopf.

        Ist der Code den Du gepostet hast genau der, der das Problem verursacht, oder ist das nur ein in etwa quasi so Code?

        Ich befürchte genau dieser macht diese Troubles. Das
        ImageDestroy($image1);
        mach auf jeden Fall, das gibt den vom Bild belegten Speicher frei.

        Das wär eigentlich eine Erklärung dass in Summe zuweng freier Speicher ist um das Bild im Speicher aufzubauen. Könnte das sein?

        Denn ansich dürfte die Verarbeitung des Skripts erst weitergehen wenn der Command
        imagejpeg($image1,$bildname.".jpg",$quality);
        vollständig abgearbeitet ist, und nicht bereits vorher.

        Kann es sein, dass zuwenig Plattenplatz zur Verfügung steht? Glaub ich ja auch nicht, aber who knows?

        Was steht im $quality? Ein vernünftiger Wert?

        Hast Du Zugriff auf das Webserver-Logfile? Gibt es dort vielleicht eine Fehlermeldung? Vielleicht suchen wir an einer ganz falschen Stelle?

        Kommentar


        • #5
          das ist das script was im moment auf meinem server liegt:
          PHP-Code:
          <?PHP
          echo "&wert=0&";
           
          $image imagecreatefromjpeg($originalbild.".jpg");
           
          $image1 imagecreatetruecolor($breite,$hoehe);
           
          $farbe_body=imagecolorallocate($image1,255,255,255);
           
          imagecopyresized($image1$image,$dstx,$dsty,$srcx,$srcy,$dstw,$dsth,$srcw,$srch);
           
          imagejpeg($image1,$bildname.".jpg",$quality);
           
          ImageDestroy($image1);
          //sleep(1);
           
          if (file_exists($bildname.".jpg")){
              echo 
          "&wert=1&";
                   
          unlink (".jpg");
            } else{
              echo 
          "&wert=0&";
           }

          ?>
          ansehen kannst du es dir auf http://www.flactory.de/image2/ba.html

          wenn du auf das bild (linke seite) klickst wird es nochmal neu erstellt und geladen (musste n paar mal versuchen dann siehst du das es nicht immer geladen wird). unten rechts findest du den dateinamen, der als jpg im gleichen verzeichnis liegt.
          das bild wird nach darstellung wieder gelöscht. aber wenns nicht dargestellt wird, kannst du es auch manuel in nem brwoser aufrufen.

          kannst ja mal bescheid sagen, dann aktivier ich den sleep wieder und du kannst dir den unterschied ansehen.

          im logfile des servers sehe ich mal nach, aber bisher sind mir keine fehlermeldungen ins auge gesprungen (hosteurope).

          danke für deine mühe
          gruß, smirgel

          Kommentar


          • #6
            Habs mir angeschaut. Schlauer bin ich nicht geworden. Nebenbei bei
            unlink (".jpg");
            hast vermutlich den Filenamen vergessen.

            Ich hab leider keine Ahnung wie die Kommunikation zwischen Flash und dem Webserver funktioniert. Was Du noch probieren könntest: Caching ausschalten.

            Folgende Header Informationen füg mal testweise ganz zu Beginn Deines Skripts ein, vor dem ersten Statement, das ist wichtig, damit ein eventueller Proxy Chache Mechanismus ausgeschaltet wird.

            PHP-Code:
            header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Datum der Vergangenheit 
            header ("Last-Modified: " gmdate ("D, d M Y H:i:s") . " GMT"); // immer geändert 
            header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
            header ("Pragma: no-cache"); // HTTP/1.0 

            Kommentar


            • #7
              das cachen habe ich schon übers flash ausgeschaltet.
              nach einigem rumprobieren mache ich es jetzt so, das ich das existieren des bildes seprat aus flash überprüfe. ist zwar nicht die optimalste lösung, aber dafür läufts soweit stabil.

              vielen dank nochmal für deine hilfe
              gruß, smirgel

              Kommentar

              Lädt...
              X