Anzeige

Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz | PSD-Tutorials.de

Erstellt von zome, 19.01.2010.

  1. zome

    zome Multimedia-Artist

    Dabei seit:
    22.10.2007
    Beiträge:
    83
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Software:
    Photoshop, Dreamweaver, Transmit, Illustrator, In-Design, Cinema 4D, Studio One, NI Komplete & Kore
    Kameratyp:
    Canon EOS
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    Hallo allerseits,

    es geht bei mir um folgendes: momentan arbeite ich an einer website
    für mein studium, die dynamisch mit php und mysql aufgebaut ist.

    Soma Photographics

    Auf der Seite gibt es eine Bildergalerie

    Soma Photographics

    Diese kann man wenn man im Adminbereich eingeloggt ist "befüllen".

    [​IMG]

    DAS funktioniert auch: das Formular wird abgeschickt - auf dieser Seite(die die Daten vom Formular entgegen nimmt) werden meine Funktionen includiert und die Funktion "upload_gallery()"
    wird ausgeführt.

    Code (Text):
    1.  
    2. //-------------------------------------- FUNCTION GALLERY NEW PICTURE ------------------------------------
    3.  
    4. function upload_gallery()
    5. {
    6.    
    7. $gallery_name = $_POST['upload_gallery_name'];    
    8.    
    9.            
    10. $report_img = '';
    11.  
    12. $IMG_WIDTH = $_POST['strWidth'];      
    13. $IMG_HEIGHT = $_POST['strHeight'];  
    14. $IMG_ROOT_DB = "uploads/gallery/".$gallery_name;
    15. $IMG_ROOT = "../../../uploads/gallery/".$gallery_name;
    16. $IMG_ROOT2_DB = "uploads/gallery/".$gallery_name."/thumbs";
    17. $IMG_ROOT2 = "../../../uploads/gallery/".$gallery_name."/thumbs";
    18. $thumb = "th_";
    19.            
    20. $fileName = explode(".", $_FILES['strFile']['name']);
    21. $name = str_replace(' ', '_', $fileName[0]);
    22.            
    23. $acceptedTypes = array('image/jpeg', 'image/jpg', 'image/pjpeg');
    24.        
    25.  
    26. if(!in_array($_FILES['strFile']['type'], $acceptedTypes) || trim($_FILES['strFile']['tmp_name']) == "" || trim($_FILES['strFile']['tmp_name']) =="none")
    27.     {
    28.      echo '<div id="upload">
    29.              <h1>Das geht leider nicht</h1>
    30.            <p>Du hast kein Bild ausgew&auml;hlt, oder es handelt sich um kein unterst&uuml;tztes Format.</p>
    31.           </div>';
    32.     }
    33. else
    34.      {
    35.     $img_orig_size = getimagesize($_FILES['strFile']['tmp_name']);
    36.     $img_orig_width = $img_orig_size[0];
    37.     $img_orig_height = $img_orig_size[1];                                                                                                
    38.                            
    39.     $img_original = ImageCreateFromJpeg($_FILES['strFile']['tmp_name']);
    40.     $image_stored =  $_POST['strName']  .'-'. "$name.jpg";
    41.     ImageJPEG($img_original, "$IMG_ROOT/$image_stored");
    42.         # <div id='upload'>                    
    43.     echo "
    44.               <h1>Das hat geklappt</h1>
    45.            <p>Du hast hochgeladen: {$_FILES['strFile']['name']}<br>
    46.             Neuer Name: $image_stored<br>
    47.             Breite: $img_orig_width<br>
    48.             H&ouml;he: $img_orig_height<br>
    49.            </p>    
    50.            <p>
    51.             <a target='_blank' href='$IMG_ROOT/$image_stored'>Orginal anschauen</a>
    52.            </p>";
    53.                                        
    54. $link_SQL_insert = "INSERT INTO gallery_content (gallery_name,pic_name,pic_url,thumb_url) VALUES ('$gallery_name','$image_stored','$IMG_ROOT_DB/$image_stored','$IMG_ROOT2_DB/$thumb$image_stored')";
    55. $bool = mysql_query($link_SQL_insert);
    56. if($bool==1)
    57.             {
    58.              echo "<div class=\"report_zeile\">";
    59.                echo "Neues Bild wurde gespeichert";
    60.              echo "</div>";
    61.             }
    62. if($bool<>1)
    63.             {
    64.             echo "<div class=\"report_zeile\">";
    65.             echo "Beim Aufnehmen des Bildes ist ein Fehler aufgetreten<br>";
    66.             echo "<a href=\"../../index.php?seite=clients\" class=\"back\">zur&uuml;ck</a>";
    67.              echo "</div>";
    68.               }
    69.  
    70.                
    71.                            
    72. if($img_orig_width <= $IMG_WIDTH || $img_orig_height <= $IMG_HEIGHT)
    73.     {
    74.     echo "<p>Das von dir ausgew&auml;hlte Bild ist kleiner als deine Angaben</p><p>Es wurde also kein Thumbnail erzeugt.</p></div>";
    75.     }
    76. else
    77.     {                                    
    78.     $img_x = $img_orig_width;
    79.     $img_y = $img_orig_height;
    80.  
    81.     if ($img_x > $img_y )
    82.         {
    83.         $x=150;
    84.         $y = round(($x*$img_y)/$img_x);
    85.         }
    86.     else
    87.         {
    88.         $y=150;
    89.         $x=round(($y*$img_x)/$img_y);
    90.         }
    91.  
    92.     $ergebnisbreite = $x;
    93.     $ergebnishoehe = $y;
    94.                                                
    95.     $breite_th = '75';
    96.     $hoehe_th = '100';
    97.                                                
    98.     $quality = '100';
    99.                                                
    100.     $altesBild = ImageCreateFromJpeg($_FILES['strFile']['tmp_name']);
    101.     $neuesBild = imagecreatetruecolor($ergebnisbreite,$ergebnishoehe);
    102.     $neuesBild2 = imagecreatetruecolor($breite_th,$hoehe_th);
    103.                                                
    104.     $pic_x = imagesx($neuesBild)/5;
    105.     $pic_y = imagesy($neuesBild)/5;
    106.                                            
    107.     #Skalierung    
    108.     imagecopyresampled($neuesBild, $altesBild, 0 , 0 , 0 , 0, $x, $y, $img_x, $img_y);    
    109.     #Kopieren eines Ausschnitts vom Skalierten Bild in ein neuees mit der Zielgrösse
    110.     imagecopy($neuesBild2,$neuesBild,0,0,$pic_x,$pic_y,$breite_th,$hoehe_th);                                                                                                                                                                                                            
    111.            
    112.                                                
    113.     $img_name = "th_$image_stored";
    114.     ImageJPEG($neuesBild2,"$IMG_ROOT2/$img_name",$quality);
    115.     ImageDestroy($neuesBild);
    116.     $mg_new_size = filesize("$IMG_ROOT2/$img_name");
    117.                                            
    118.     echo "<h2>Das erzeugte Thumbnail</h2>
    119.            <p>Deine Einstellungen: $IMG_WIDTH x $IMG_HEIGHT<br>
    120.             Breite: $img_new_width<br>
    121.             H&ouml;he: $img_new_height<br>
    122.             Gr&ouml;&szlig;e: $mg_new_size (in bytes)
    123.            </p>
    124.             <img src='$IMG_ROOT2/$img_name' />";
    125.     //    </div>";                                                            
    126.                                    
    127.        
    128.     }
    129.                            
    130.                    
    131.     }
    132. }
    133.  
    Wie gesagt das funktioniert: neues Bild wird hochgeladen, thumbnail wird erstellt und die Namen und Pfade werden in die Datenbank gespeichert.

    [​IMG]

    Ich weiß sieht noch ziemlich unaufgeräumt aus, und die Ausgaben unter dem thumb mal bitte ignorieren.

    OK, nun zu meinem eigentlichen Problem:
    Ich möchte dem Admin die Möglichkeit geben einzelne Bilder zu berarbeiten, d.h. Bild austauschen und Titel ändern.

    Er kann sich das Bild auswählen und kommt auf folgendes Formular:

    [​IMG]

    Wird nur der Name geändert -> so wird nur der Name geändert und das
    Bild bleibt;
    wird noch zusätzlich ein Bild hochgeladen -> so werden die alten Bilder(grosses Bild und thumbnail) gelöscht, das neue Bild hochgeladen,
    thumbnail erstellt,Pfade in datenbank usw.

    Ich bediene mich wieder der oben genannten Funktion, nur leicht umgeschrieben - das Problem: das thumbnail ist leider SCHWARZ.

    [​IMG]

    Die Pfade sind alle gleich - das "grosse" Bild wird auch erzeugt und in der
    Galerie angezeigt.

    Ich dachte vielleicht wird das hochgeladene Bild nicht gefunden(was dann noch verkleinert und beschnitten wird), aber dann wäre das "grosse"Bild ja
    auch nicht da. Ich habe viel probiert und nach Fehlern gesucht, leider erfolglos.

    Hier die Update Funktion:

    Code (Text):
    1.  
    2. //-----------------------------------------------------------------------------------------------------------------------------------------------
    3. //-------------------------------------- FUNCTION EDIT GALLERY ENTRY(PIC) ---------------------------------------------------------------------
    4. //-----------------------------------------------------------------------------------------------------------------------------------------------
    5.  
    6. function edit_pic()
    7. {
    8.        
    9.  $id = $_POST['id'];        
    10.  $gallery_name = $_POST['gallery_name'];    
    11.  $pic_name = $_POST['strName'];    
    12.  
    13.  $query = "SELECT pic_name FROM gallery_content WHERE id = '$id'";
    14.  $sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());
    15.  $row = mysql_fetch_object($sql);
    16.  
    17.  $pic_name_db = $row->pic_name;        
    18.    
    19. //-------------------------------------- Falls neuer Bildname naders als der alte Bildname ist -> Bildname Update  -------------------------------------------
    20.  
    21.  if ($pic_name_db != $pic_name)
    22.     {    
    23.        
    24.       $sql="UPDATE gallery_content SET pic_name = '".$pic_name."' WHERE ID = ".$id;
    25.       $bool = mysql_query($sql);
    26.  
    27.       if($bool==1)
    28.         {
    29.         echo "<div class=\"report_zeile\">";
    30.             echo "Bildname $pic_name_db wurde in $pic_name ge&auml;ndert";
    31.            echo "</div>";
    32.    
    33.         }
    34.         if($bool<>1)
    35.         {
    36.         echo "<div class=\"report_zeile\">";
    37.         echo "Beim Aufnehmen des neuen Bildnamens ist ein Fehler aufgetreten";
    38.         echo "</div>";
    39.         }
    40.          
    41.     }        
    42.  
    43.  //-------------------------------------- Falls Bild mithochgeladen wurde -> altes Bild löschen und neues uploaden  -------------------------------------------
    44.  
    45. if (is_uploaded_file($_FILES['strFile']['tmp_name']))
    46. {        
    47.  
    48. $link_select_sql = "SELECT * FROM gallery_content WHERE id = '$id' LIMIT 1";
    49. $link_select_result = mysql_query($link_select_sql);
    50.  
    51. while($links = mysql_fetch_array($link_select_result))
    52.  {
    53.     $datei = "../../../".$links['pic_url'];
    54.     $datei_th = "../../../".$links['thumb_url'];
    55.  
    56.     $picture_name = $links['pic_name'];
    57.  }
    58.    
    59. unlink($datei);
    60. unlink($datei_th);
    61.  
    62. echo "<div class=\"report_zeile\">";
    63. echo "Das Bild <font color=\"#CC6600\">$pic_name_db und thumbnail</font> wurden gel&ouml;scht";
    64. echo "</div>";
    65. //echo "<script type=\"text/javascript\">";
    66. //echo "setback_gallery( );";
    67.  
    68.            
    69.            
    70. $report_img = '';
    71.  
    72.  
    73. $IMG_WIDTH = 75;      
    74. $IMG_HEIGHT = 100;  
    75. $IMG_ROOT_DB = "uploads/gallery/".$gallery_name;
    76. $IMG_ROOT = "../../../uploads/gallery/".$gallery_name;
    77. $IMG_ROOT2_DB = "uploads/gallery/".$gallery_name."/thumbs";
    78. $IMG_ROOT2 = "../../../uploads/gallery/".$gallery_name."/thumbs";
    79. $thumb = "th_";
    80.            
    81. $fileName = explode(".", $_FILES['strFile']['name']);
    82. $name = str_replace(' ', '_', $fileName[0]);
    83.            
    84. $acceptedTypes = array('image/jpeg', 'image/jpg', 'image/pjpeg');
    85.        
    86.  
    87. if(!in_array($_FILES['strFile']['type'], $acceptedTypes) || trim($_FILES['strFile']['tmp_name']) == "" || trim($_FILES['strFile']['tmp_name']) =="none")
    88.     {
    89.      echo '<div id="upload">
    90.              <h1>Das geht leider nicht</h1>
    91.            <p>Du hast kein Bild ausgew&auml;hlt, oder es handelt sich um kein unterst&uuml;tztes Format.</p>
    92.           </div>';
    93.     }
    94. else
    95.      {
    96.     $img_orig_size = getimagesize($_FILES['strFile']['tmp_name']);
    97.     $img_orig_width = $img_orig_size[0];
    98.     $img_orig_height = $img_orig_size[1];                                                                                                
    99.                            
    100.     $img_original = ImageCreateFromJpeg($_FILES['strFile']['tmp_name']);
    101.     $image_stored =  $_POST['strName'];
    102.     ImageJPEG($img_original, "$IMG_ROOT/$image_stored");
    103.         # <div id='upload'>        
    104.        
    105.     echo "
    106.               <h1>Das hat geklappt</h1>
    107.            <p>Du hast hochgeladen: {$_FILES['strFile']['name']}<br>
    108.             Neuer Name: $image_stored<br>
    109.             Breite: $img_orig_width<br>
    110.             H&ouml;he: $img_orig_height<br>
    111.            </p>    
    112.            <p>
    113.             <a target='_blank' href='$IMG_ROOT/$image_stored'>Orginal anschauen</a>
    114.            </p>";
    115.        
    116.  
    117. $link_SQL_insert ="UPDATE gallery_content SET pic_url = '$IMG_ROOT_DB/$image_stored', thumb_url = '$IMG_ROOT2_DB/$thumb$image_stored' WHERE ID = ".$id;
    118. $bool = mysql_query($link_SQL_insert);
    119. if($bool==1)
    120.             {
    121.              echo "<div class=\"report_zeile\">";
    122.                echo "Altes Bild wurde ersetzt";
    123.              echo "</div>";
    124.             }
    125. if($bool<>1)
    126.             {
    127.             echo "<div class=\"report_zeile\">";
    128.             echo "Beim Aufnehmen des Bildes ist ein Fehler aufgetreten<br>";
    129.             echo "<a href=\"../../index.php?seite=clients\" class=\"back\">zur&uuml;ck</a>";
    130.              echo "</div>";
    131.               }
    132.  
    133.  
    134. $breite_th = '75';
    135. $hoehe_th = '100';
    136. $ergebnisbreite = $x;
    137. $ergebnishoehe = $y;
    138.                                                
    139. $quality = '100';          
    140.                            
    141.  
    142. if($img_orig_width <= $IMG_WIDTH || $img_orig_height <= $IMG_HEIGHT)
    143.     {
    144.     echo "<p>Das von dir ausgew&auml;hlte Bild ist kleiner als die Vorgaben</p><p>Es wurde also kein Thumbnail erzeugt.</p></div>";
    145.     }
    146. else
    147.     {                                    
    148.     $img_x = $img_orig_width;
    149.     $img_y = $img_orig_height;
    150.  
    151.     if ($img_x > $img_y )
    152.         {
    153.         $x=150;
    154.         $y = round(($x*$img_y)/$img_x);
    155.         }
    156.     else
    157.         {
    158.         $y=150;
    159.         $x=round(($y*$img_x)/$img_y);
    160.         }
    161.  
    162.    
    163.                                                
    164.     $altesBild = $img_original;
    165.     $neuesBild = imagecreatetruecolor($ergebnisbreite,$ergebnishoehe);
    166.     $neuesBild2 = imagecreatetruecolor($breite_th,$hoehe_th);
    167.                                                
    168.     $pic_x = imagesx($neuesBild)/5;
    169.     $pic_y = imagesy($neuesBild)/5;
    170.                                            
    171.     #Skalierung    
    172.     imagecopyresampled($neuesBild,$altesBild, 0, 0, 0, 0, $x, $y, $img_x, $img_y);    
    173.     #Kopieren eines Ausschnitts vom Skalierten Bild in ein neuees mit der Zielgrösse
    174.     imagecopy($neuesBild2,$neuesBild,0,0,$pic_x,$pic_y,$breite_th,$hoehe_th);                                                                                                                                                                                                            
    175.    
    176.                                                
    177.     $img_name = "th_$image_stored";
    178.     ImageJPEG($neuesBild2,"$IMG_ROOT2/$img_name",$quality);
    179.     ImageDestroy($neuesBild);
    180.     $mg_new_size = filesize("$IMG_ROOT2/$img_name");
    181.                                            
    182.     echo "<h2>Das erzeugte Thumbnail</h2>
    183.            <p>Deine Einstellungen: $IMG_WIDTH x $IMG_HEIGHT<br>
    184.             Breite: $img_new_width<br>
    185.             H&ouml;he: $img_new_height<br>
    186.             Gr&ouml;&szlig;e: $mg_new_size (in bytes)
    187.            </p>
    188.             <img src='$IMG_ROOT2/$img_name' />";
    189.     //    </div>";                                                            
    190.                                    
    191.        
    192.     }
    193.                            
    194.                    
    195.     }
    196. }
    197. else
    198. {
    199.  
    200.             echo "<div class=\"report_zeile\">";
    201.             echo "Das Bild wurde nicht ver&auml;ndert";
    202.              echo "</div>";
    203.  
    204. }
    205.  
    206. }
    207.  
    208. //-----------------------------------------------------------------------------------------------------------------------------------------------
    209. //-------------------------------------- FUNCTION EDIT GALLERY ENTRY(PIC) END ---------------------------------------------------------------------
    210. //-----------------------------------------------------------------------------------------------------------------------------------------------
    211.  
    212. ?>
    213.  
    Ich denke das Problem liegt im code relativ weit unten, bei
    "#Skalierung" also bei:
    imagecopyresampled($neuesBild,$altesBild, 0, 0, 0, 0, $x, $y, $img_x, $img_y);
    .
    .
    .

    Ich weiß, das war jetzt sehr langatmig und ausführlich und mein code
    kann man sicherlich besser schreiben (für Vorschläge bin ich offen),
    vielleicht hatte jemand hier auch schon ein ähnliches Problem oder weiß einen Lösungsansatz.

    Vielen Dank für eure Hilfe:)
     
    #1      
  2. lachender_engel

    lachender_engel Aktives Mitglied

    Dabei seit:
    23.03.2009
    Beiträge:
    1.280
    Geschlecht:
    männlich
    Ort:
    Die Welt
    Software:
    Adobe Creative Suite CS6 Design & Web, Notepad++, IrfanView, Jetbrains PhpStorm
    Kameratyp:
    Nikon D7200
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Ich meine die Funktion imagecopyresampled basiert auf der GD-Lib.
    Hast Du diese auf Deinem Server installiert?
     
    #2      
  3. mommel

    mommel mv dau /dev/null

    Dabei seit:
    27.12.2009
    Beiträge:
    35
    Geschlecht:
    männlich
    Software:
    IntelliJ // PHPStorm // CS-Suite // Lightroom 4
    Kameratyp:
    Nikon D90 // Sony DSC-W290
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    imagecopyresampled wird auch schon im ersten script benutzt und funktioniert anscheinend da auch also wirds nicht an der gd lib liegen, obendrein ist sie seit PHP 4.0.6 ein Standartpaket PHP: imagecopyresampled - Manual

    lass dir doch mal die kompletten Variabeln ausgeben, bzw gib mal $altesBild aus und schau ob das überhaupt ein Bild ist
     
    Zuletzt bearbeitet: 19.01.2010
    #3      
  4. zome

    zome Multimedia-Artist

    Dabei seit:
    22.10.2007
    Beiträge:
    83
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Software:
    Photoshop, Dreamweaver, Transmit, Illustrator, In-Design, Cinema 4D, Studio One, NI Komplete & Kore
    Kameratyp:
    Canon EOS
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Hey Mommel danke für deine Antwort, du hast völlig Recht: GD Lib ist natürlich installiert. Und das mit dem Bild bzw. Variable ausgeben lassen, habe ich probiert -
    da kommt dann sowas raus: "reference#13"
    keine Ahnung was das heisst.

    Danke für eure Antworten

    Aber komisch ist es doch - das ist genau derselbe Aufruf wie wenn ich zum ersten Mal ein Bild hochlade - hm ich lass mir da mal die VARs ausgeben...

    Bitte 'Edit' benutzen um Doppelposts zu vermeiden
     
    Zuletzt von einem Moderator bearbeitet: 23.01.2010
    #4      
  5. mommel

    mommel mv dau /dev/null

    Dabei seit:
    27.12.2009
    Beiträge:
    35
    Geschlecht:
    männlich
    Software:
    IntelliJ // PHPStorm // CS-Suite // Lightroom 4
    Kameratyp:
    Nikon D90 // Sony DSC-W290
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Mhh komisch scheint das du ne valide Resource hast somit müsstest du auch das Bild verändern können. Ich hol mir das Script mal bei Zeiten auf nen Server und schau's mir mal genau an.
     
    #5      
  6. zome

    zome Multimedia-Artist

    Dabei seit:
    22.10.2007
    Beiträge:
    83
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Software:
    Photoshop, Dreamweaver, Transmit, Illustrator, In-Design, Cinema 4D, Studio One, NI Komplete & Kore
    Kameratyp:
    Canon EOS
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Hmmm - keiner mehr irgendeinen Vorschlag?
     
    #6      
  7. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Da steigt ja keiner mehr durch, ist irgendwie doppelt, while-schleife trotz Limit 1 usw.

    Mach Dir eine Funktion, die ausschliesslich für das Verkleinern der Bilder zuständig ist und bei Erfolg true zurückgibt. Kannste dann prüfen und Deine DB aktualisieren.

    Würde sagen Du hast Dich hier ein wenig vergallopiert :hmpf:
     
    #7      
  8. zome

    zome Multimedia-Artist

    Dabei seit:
    22.10.2007
    Beiträge:
    83
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Software:
    Photoshop, Dreamweaver, Transmit, Illustrator, In-Design, Cinema 4D, Studio One, NI Komplete & Kore
    Kameratyp:
    Canon EOS
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Hey Netbandit, danke für Deine Kritik. Ich hab die Funktion(das ist eine Funktion) mittlerweile etwas sauberer formatiert. "Limit" kommt aber nur bei auslesen des Bildnamens etc. nach der "id" in der Funktion vor.

    Und von wegen doppelt versteh ich nicht ganz - einmal wird das Bild eben upgeloaded ohne "schnickschnak" und beim zweiten Mal wird eben skaliert und beschnitten, aber wirklich doppelt ist da nichts.

    Vielleicht kann man das schöner und kürzer schreiben, über Vorschläge würde ich mich freuen.


    Code (Text):
    1.  
    2.  
    3. function edit_pic()
    4. {
    5.        
    6.  $id = $_POST['id'];        
    7.  $gallery_name = $_POST['gallery_name'];    
    8.  $pic_name = $_POST['strName'];    
    9.  
    10.  $query = "SELECT pic_name FROM gallery_content WHERE id = '$id'";
    11.  $sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());
    12.  $row = mysql_fetch_object($sql);
    13.  
    14.  $pic_name_db = $row->pic_name;        
    15.    
    16. //-------------------------------------- Falls neuer Bildname naders als der alte Bildname ist -> Bildname Update  -------------------------------------------
    17.  
    18.  if ($pic_name_db != $pic_name)
    19.     {    
    20.        
    21.       $sql="UPDATE gallery_content SET pic_name = '".$pic_name."' WHERE ID = ".$id;
    22.       $bool = mysql_query($sql);
    23.  
    24.       if($bool==1)
    25.         {
    26.         echo "<div class=\"report_zeile\">";
    27.             echo "Bildname <font color=\"#CC6600\">$pic_name_db</font> wurde in <font color=\"#CC6600\">$pic_name</font> ge&auml;ndert";
    28.            echo "</div>";
    29.         echo "<script type=\"text/javascript\">";
    30.         echo "setback_gallery( );";
    31.         echo "</script>";
    32.    
    33.         }
    34.         if($bool<>1)
    35.         {
    36.         echo "<div class=\"report_zeile\">";
    37.         echo "Beim Aufnehmen des neuen Bildnamens ist ein Fehler aufgetreten";
    38.         echo "</div>";
    39.         }
    40.          
    41.     }        
    42.  
    43.  //-------------------------------------- Falls Bild mithochgeladen wurde -> altes Bild löschen und neues uploaden  -------------------------------------------
    44.  
    45. if (is_uploaded_file($_FILES['strFile']['tmp_name']))
    46. {        
    47.  
    48. $link_select_sql = "SELECT * FROM gallery_content WHERE id = '$id' LIMIT 1";
    49. $link_select_result = mysql_query($link_select_sql);
    50.  
    51. while($links = mysql_fetch_array($link_select_result))
    52.  {
    53.     $datei = "../../../".$links['pic_url'];
    54.     $datei_th = "../../../".$links['thumb_url'];
    55.  
    56.     $picture_name = $links['pic_name'];
    57.  }
    58.    
    59. if (unlink($datei) && unlink($datei_th))
    60. {
    61.     echo "<div class=\"report_zeile\">";
    62.     echo "Das Bild <font color=\"#CC6600\">$pic_name_db und thumbnail</font> wurden gel&ouml;scht";
    63.     echo "</div>";
    64.    
    65. }    
    66. else
    67. {
    68.     echo "<div class=\"report_zeile\">";
    69.     echo "Das Bild <font color=\"#CC6600\">$pic_name_db und thumbnail</font> konnten nicht gel&ouml;scht werden";
    70.     echo "<a href=\"../../index.php?seite=gallery\" class=\"back\">zur&uuml;ck</a>";
    71.      echo "</div>";
    72. }
    73.  
    74.  
    75. $report_img = '';
    76.  
    77.  
    78. $IMG_WIDTH = 75;      
    79. $IMG_HEIGHT = 100;  
    80. $IMG_ROOT_DB = "uploads/gallery/".$gallery_name;
    81. $IMG_ROOT = "../../../uploads/gallery/".$gallery_name;
    82. $IMG_ROOT2_DB = "uploads/gallery/".$gallery_name."/thumbs";
    83. $IMG_ROOT2 = "../../../uploads/gallery/".$gallery_name."/thumbs";
    84. $thumb = "th_";
    85.            
    86. $fileName = explode(".", $_FILES['strFile']['name']);
    87. $name = str_replace(' ', '_', $fileName[0]);
    88.            
    89. $acceptedTypes = array('image/jpeg', 'image/jpg', 'image/pjpeg');
    90.        
    91.  
    92. if(!in_array($_FILES['strFile']['type'], $acceptedTypes) || trim($_FILES['strFile']['tmp_name']) == "" || trim($_FILES['strFile']['tmp_name']) =="none")
    93.     {
    94.      echo '<div id="upload">
    95.              <h1>Das geht leider nicht</h1>
    96.            <p>Du hast kein Bild ausgew&auml;hlt, oder es handelt sich um kein unterst&uuml;tztes Format.</p>
    97.           </div>';
    98.     }
    99. else
    100.      {
    101.     $img_orig_size = getimagesize($_FILES['strFile']['tmp_name']);
    102.     $img_orig_width = $img_orig_size[0];
    103.     $img_orig_height = $img_orig_size[1];                                                                                                
    104.                            
    105.     $img_original = ImageCreateFromJpeg($_FILES['strFile']['tmp_name']);
    106.     $image_stored =  $_POST['strName'];
    107.     ImageJPEG($img_original, "$IMG_ROOT/$image_stored");
    108.         # <div id='upload'>        
    109.        
    110.     echo "
    111.               <div class=\"report_zeile\">Bild erfolgreich hochgeladen</div>
    112.            <div class=\"report_zeile\">Bild: {$_FILES['strFile']['name']}</div>
    113.             <div class=\"report_zeile\">Neuer Name: $image_stored</div>
    114.             <div class=\"report_zeile\">Breite: $img_orig_width</div>
    115.             <div class=\"report_zeile\">H&ouml;he: $img_orig_height</div>
    116.            <div class=\"report_zeile\">
    117.             <a target='_blank' href='$IMG_ROOT/$image_stored'>Orginal anschauen</a>
    118.             </div>
    119.            ";
    120.        
    121.  
    122. $link_SQL_insert ="UPDATE gallery_content SET pic_url = '$IMG_ROOT_DB/$image_stored', thumb_url = '$IMG_ROOT2_DB/$thumb$image_stored' WHERE ID = ".$id;
    123. $bool = mysql_query($link_SQL_insert);
    124. if($bool==1)
    125.             {
    126.              echo "<div class=\"report_zeile\">";
    127.                echo "Altes Bild wurde ersetzt";
    128.              echo "</div>";
    129.              echo "<script type=\"text/javascript\">";
    130.             echo "setback_gallery( );";
    131.             echo "</script>";
    132.             }
    133. if($bool<>1)
    134.             {
    135.             echo "<div class=\"report_zeile\">";
    136.             echo "Beim Aufnehmen des Bildes ist ein Fehler aufgetreten<br>";
    137.             echo "<a href=\"../../index.php?seite=clients\" class=\"back\">zur&uuml;ck</a>";
    138.              echo "</div>";
    139.               }
    140.  
    141.  
    142. $breite_th = '75';
    143. $hoehe_th = '100';
    144. $ergebnisbreite = $x;
    145. $ergebnishoehe = $y;
    146.                                                
    147. $quality = '100';          
    148.                            
    149.  
    150. if($img_orig_width <= $IMG_WIDTH || $img_orig_height <= $IMG_HEIGHT)
    151.     {
    152.     echo "<p>Das von dir ausgew&auml;hlte Bild ist kleiner als die Vorgaben</p><p>Es wurde also kein Thumbnail erzeugt.</p></div>";
    153.     }
    154. else
    155.     {                                    
    156.     $img_x = $img_orig_width;
    157.     $img_y = $img_orig_height;
    158.  
    159.     if ($img_x > $img_y )
    160.         {
    161.         $x=150;
    162.         $y = round(($x*$img_y)/$img_x);
    163.         }
    164.     else
    165.         {
    166.         $y=150;
    167.         $x=round(($y*$img_x)/$img_y);
    168.         }
    169.  
    170.    
    171.                                                
    172.     $altesBild = $img_original;
    173.     $neuesBild = imagecreatetruecolor($ergebnisbreite,$ergebnishoehe);
    174.     $neuesBild2 = imagecreatetruecolor($breite_th,$hoehe_th);
    175.                                                
    176.     $pic_x = imagesx($neuesBild)/5;
    177.     $pic_y = imagesy($neuesBild)/5;
    178.                                            
    179.     #Skalierung    
    180.     imagecopyresampled($neuesBild,$altesBild, 0, 0, 0, 0, $x, $y, $img_x, $img_y);    
    181.     #Kopieren eines Ausschnitts vom Skalierten Bild in ein neuees mit der Zielgrösse
    182.     imagecopy($neuesBild2,$neuesBild,0,0,$pic_x,$pic_y,$breite_th,$hoehe_th);                                                                                                                                                                                                            
    183.    
    184.                                                
    185.     $img_name = "th_$image_stored";
    186.     ImageJPEG($neuesBild2,"$IMG_ROOT2/$img_name",$quality);
    187.     ImageDestroy($neuesBild);
    188.     $mg_new_size = filesize("$IMG_ROOT2/$img_name");
    189.                                            
    190.     echo "<div class=\"report_zeile\">Das erzeugte Thumbnail:</div>
    191.            <div class=\"report_zeile\">Gr&ouml;&szlig;e: $mg_new_size (in bytes)</div>
    192.             <img src='$IMG_ROOT2/$img_name' />";
    193.     //    </div>";                                                            
    194.                                    
    195.        
    196.     }
    197.                            
    198.                    
    199.     }
    200. }
    201. else
    202. {
    203.  
    204.             echo "<div class=\"report_zeile\">";
    205.             echo "Das Bild wurde nicht ver&auml;ndert";
    206.              echo "</div>";
    207.  
    208. }
    209.  
    210. }
    211.  
     
    Zuletzt bearbeitet: 24.01.2010
    #8      
  9. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Wenn das Bild schwarz ist, läuft zwar generell die Funktion sauber durch, erhält aber keine Bilddaten aus dem Original. Also ist die Frage in deinem Script zu klären, ob die Bilddaten oder das Original korrekt erreicht werden per path oder ob die Bilddatenübergabe korrrekt abläuft.

    Prüf diese beiden Punkte und du wirst ein korrektes Ergebnis erhalten.
     
    #9      
  10. zome

    zome Multimedia-Artist

    Dabei seit:
    22.10.2007
    Beiträge:
    83
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Software:
    Photoshop, Dreamweaver, Transmit, Illustrator, In-Design, Cinema 4D, Studio One, NI Komplete & Kore
    Kameratyp:
    Canon EOS
    Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz
    AW: Bildupload(Update) -> Bild in Ordnung, thumbnail schwarz

    Hey Saila, danke für deinen Tipp.
    ich hatte zwei Variablen zu früh definiert. Jetzt lkappt soweit alles, danke.
    Jetzt habe ich aber noch folgendes Problem:
    wenn das bild ersetzt wird, der Name aber nicht geändert wird, wird mir noch das alte thumbnail angezeigt, obwohl es gar nicht mehr existiert.

    Ich denke das hängt noch im Cache vom browser, von der Datenbank(?)

    [​IMG]

    Hier ist das alte Bild zu sehen - in der Galerie selbst ist schon das neue thumbnail nach refresh.


    >>22.10:

    ich hab`nun meine Tabellen mal gelöscht (also den Inhalt -> id wieder zurückgesetzt), die Bilder auch - eine neu Galerie erstellt(Verzeichnisse und DB Eintrag) ein paar Bilder neu
    hochgeladen.
    Und jetzt funktioniert alles - super;

    danke nochmal für eure Ratschläge

    Gibt`s hier irgendwo `n Button für "Problem gelöst"?
     
    Zuletzt bearbeitet: 24.01.2010
    #10      
x
×
×