Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 28.01.2007, 18:26   #1
TP-Moderator
 
Benutzerbild von His.Master's.Voice
 
Registriert seit: Mar 2006
His.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine User

JPEG-Bilder hochladen und in Größe reduzieren


Hallo liebe TPler,

1.) das nachfolgende php-script habe ich als thumb.php auf meinen webspace geladen uind im Browser aufgerufen. Einige jpeg Bilder hatte ich im selben Verzeichnis beigelegt. Aber irgendwie funktioniert es nicht (bereits rechte datei + verzeichnis auf chmod777 gesetzt). Ich muss dazu sagen, das ich ein absoluter Neuling in php bin!

2.) Ebenfalls möchte ich das Script um eine Upload-Funktion ergänzen, somit ein input Feld und einen Button zum Hochladen einer Bilddatei in die Seite einbinden. Falls das Bild breiter als 500 Pixel ist soll es auf diesen Wert verkleinert werden und weiterhin ein verkleinertes Bild als Thumbnail erzeugt werden.

Habt ihr einen Tipp für mich was ich zu 1) falsch gemacht habe. Über einen Code-Schnippsel zu 2) würde ich mich freuen. Vorab vielen Dank.

PHP-Code:
<?php
  $image 
$_GET["image"];
  
header("Content-type: image/jpeg");
  
$scale 3;    // Ein Drittel 
  
$size getimagesize($image);
  
$width round($size[0]/$scale);
  
$height round($size[1]/$scale);
  
$src imagecreatefromjpeg($image);
  
$dest imagecreatetruecolor($width,$height);
  
imagecopyresampled($dest,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
  
imagejpeg($dest);
  
imagedestroy($dest);
  
imagedestroy($src);
?>
__________________
Gruß HMV

His.Master's.Voice ist offline   Mit Zitat antworten


Alt 28.01.2007, 19:45   #2
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Hallo ngc4594

Im Anhang ist mal ein funktionierendes Script das Du als Basis benutzen kannst. Es bietet einfach nur ein Uploadfeld mit dem Du ein Bild hochladen kannst. Das Bild wird dann auf dem Server in's Verzeichnis verschoben in dem auch das Script liegt. Dann wird es auf 500px verkleinert und eine Kopie erstellt, wobei diese Kopie dann zum Thumbnail gemacht wird (mit dem Prefix t_ für Thumbnail).

Wie gesagt soll das nur als Basis dienen und ist nicht gedacht das Du es sofort online einsetzen sollst. Es fehlen z.B. noch Abfragen ob überhaupt ein Bild hochgeladen wurde; Erweiterungen für mehrere Uploadfelder; Anpassbare Pfade; usw.
Bei der Datei muss noch das .txt entfernt werden, weil man keine .php hochladen darf.
Angehängte Dateien
Dateityp: txt bildupload.php.txt (2,2 KB, 187x aufgerufen)

Geändert von Rizzo (28.01.2007 um 23:29 Uhr).
Rizzo ist offline   Mit Zitat antworten
Alt 28.01.2007, 20:47   #3
TP-Moderator
 
Benutzerbild von His.Master's.Voice
 
Registriert seit: Mar 2006
His.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine User
Andreas,
das sieht verdammt gut aus. Vielen Dank für das Script und dein Hilfe. Ich werde das gleich mal ausprobieren und testen!
__________________
Gruß HMV

His.Master's.Voice ist offline   Mit Zitat antworten
Alt 28.01.2007, 23:32   #4
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Keine Ursache. Ich habe die angehängte Datei ausgetauscht, weil der Funktionsaufruf mal Groß und mal Klein geschrieben war. Falls also die erste Datei nicht funktioniert hat, lad dir noch mal die korrigierte Version runter.
Rizzo ist offline   Mit Zitat antworten
Alt 30.01.2007, 12:11   #5
TP-Moderator
 
Benutzerbild von His.Master's.Voice
 
Registriert seit: Mar 2006
His.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine User
Hallo,
hätte noch eine Bitte. Das von Rizzo gepostete Script möchte ich mit einer Protokolldatei kombinieren. D.h. der Name der upgeloadeten Datei, das Datum und die E-Mail Adresse des Uploaders möchte ich in eine Txt-Datei schreiben.

Bekomme jetzt allerdings eine Fehlermeldung: Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in upload.php on line 68

Im folgenden Code habe ich die Stellen rot markiert, die ich ergänzt habe. Bitte Nachsicht für die grauenhaften Gehversuche von mir in PHP. Könnte mir bitte jemand helfen!
Code:
<?php

    function BildScale( $Grafikdatei, $ThumbnailBreite ) {

        $Bilddaten = getimagesize( $Grafikdatei );

        $OriginalBreite = $Bilddaten[0];
        $OriginalHoehe = $Bilddaten[1];

        if( $OriginalBreite < $ThumbnailBreite ) {
            $ThumbnailBreite = $OriginalBreite;
        }
        $Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
        $ThumbnailHoehe = intval( $OriginalHoehe/$Skalierungsfaktor );


        $Originalgrafik = imagecreatefromjpeg( $Grafikdatei );
        $Thumbnailgrafik = imagecreatetruecolor( $ThumbnailBreite, $ThumbnailHoehe );
        imagecopyresampled( $Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe );
        imagejpeg( $Thumbnailgrafik, $Grafikdatei, 80 );

        imagedestroy( $Originalgrafik );
        imagedestroy( $Thumbnailgrafik );

    }

    function OutputUpload($_POST,$_FILES) {

        global $PictureDirName;
        // Wenn das Formular abgeschickt wurde
        if( isset( $_POST['submit'] ) ) {
            $umaskold = umask( 0 );
            // Falls die Datei groesser 0 Byte ist
            if( $_FILES['bild']['size'] > 0 ) {
                // Datei verschieben und bei Misserfolg Fehler ausgeben
                if( !@move_uploaded_file( $_FILES['bild']['tmp_name'], $_FILES['bild']['name'] ) ) {
                    echo 'Konnte die Datei nicht kopieren!';
                } else {
                    // Bildgroesse aendern (500px maximal Breite)
                    BildScale( $_FILES['bild']['name'], 500 );
                    // Bild kopieren um das Thumbnail zu erstellen
                    if( !@copy( $_FILES['bild']['name'], "t_" .$_FILES['bild']['name'] ) ) {
                        echo 'Konnte die Thumbnail-Datei nicht kopieren!';
                    } else {
                        BildScale( "t_".$_FILES['bild']['name'], 150 );
                    }
                }
                // CHMOD setzen damit man das Bild per FTP loeschen kann
                @chmod( $_FILES['bild']['name'], 0755 );
                @chmod( "t_" .$_FILES['bild']['name'], 0755 );
                // Dateien verschieben
                rename($_FILES['bild']['name'], $PictureDirName."/".$_FILES['bild']['name']);
                rename("t_".$_FILES['bild']['name'], $PictureDirName."/t_".$_FILES['bild']['name']);
	// Protokolldatei erstellen
	$fp = fopen("$PictureDirName/bildlog.txt", "a");
	fwrite($fp, ".$_FILES['bild']['name']");
	fwrite($fp, "date("Y-F-l - H:i:s")");
	fwrite($fp, "['email']['name']");
	fclose($fp);
	// Ende Protokolldatei
            }
            umask( $umaskold );
        }
        echo "<form action=".$_SERVER['PHP_SELF']." method='post' enctype='multipart/form-data' name='uploadform'>";
        echo "<input type='text' name='email'><br/>";
        echo "<input type='file' name='bild'>&nbsp;&nbsp;&nbsp;";
        echo "<input type='submit' name='submit' value='Bild hochladen'>";
        echo "</form><br/><br/>";

    }
?>
__________________
Gruß HMV


Geändert von His.Master's.Voice (30.01.2007 um 12:15 Uhr).
His.Master's.Voice ist offline   Mit Zitat antworten
Alt 30.01.2007, 19:43   #6
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Hi Uwe,

Du hast versucht, das Schema durchzuziehen. Dabei bist Du über die Anführungszeichen gestolpert.

"...$var..."

Die Anführungszeichen kennzeichnen einen String. Eventuelle variablen werden durch ihren Inhalt ersetzt.
PHP-Funktionen dürfen darin nicht vorkommen, die werden nicht ausgeführt.

Also:
PHP-Code:
// Protokolldatei erstellen
$fp fopen("$PictureDirName/bildlog.txt""a");
fwrite($fp$_FILES['bild']['name']);
fwrite($fpdate("Y-F-l - H:i:s"));
fwrite($fp$_POST['email'].'  '.$_POST['name']); # ich nehme an das das aus $_POST kommt
fclose($fp);
// Ende Protokolldatei 
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 30.01.2007, 20:10   #7
TP-Moderator
 
Benutzerbild von His.Master's.Voice
 
Registriert seit: Mar 2006
His.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine User
Oh mann, ich hab alles in "....." als String gesetzt. Das hätte ich noch von Turbo Pascal wissen müssen - naja ist schon ziemlich lange her.

St@eff.en, vielen Dank für die Hilfe!
__________________
Gruß HMV

His.Master's.Voice ist offline   Mit Zitat antworten
Alt 01.02.2007, 16:38   #8
TP-Member
 
Registriert seit: Aug 2005
Tzetze macht alles soweit korrekt
Hallo,
ich häng mich hier mal kurz ran weil ich ein ähnliches Problem habe.
Bei mir gehts auch um Upload und Resize:
Ich hab mich jetzt mal soweit vorgekämpft, dass eigentlich beides
unabhängig voneinander funktioniert!


Zuerst der Upload Code:
PHP-Code:
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="3000000">
Send this file: <br>
<input name="userfile" type="file"><br>
<input type="submit" name="senden" value="upload">
</form>


<?php 



//Deklaration der gültigen mimetypen
$mimearray=array("image/gif""image/jpeg""image/pjpeg","image/x-png","image/png");

//Upload verzeichnis
$uploaddir 'graphics/';

//Prüfen ob Formular gesendet wurde
if($_POST['senden']==true){

// Prüfung auf Gültigkeit des Vordeklarierten MimeTyps
   
if(in_array($_FILES['userfile']['type'],$mimearray))
   {
   
  
      
// dateiupload
      
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir $_FILES['userfile']['name'])) {
         echo 
"<span class=\"style4\">Datei ist gültig und wurde erfolgreich hochgeladen. <br>Debugginginfo:\n";
         echo 
"<br>";
         echo 
"Name: ".$_FILES['userfile']['name']."<br>";
         echo 
"Size: ".$_FILES['userfile']['size']."<br>";   
         echo 
"Mime: ".$_FILES['userfile']['type']."<br>";           
        }
else{
         
// Fehler beim Dateiupload
         
print "Fehler beim Dateiupload";
         }
   }else{
   
//Fehlermeldung wenn Datei nicht den vordeklarierten MimeTypes entspricht
   
echo $_FILES['userfile']['name']." - ".$_FILES['userfile']['type']." <br>ist nicht für den Upload gestattet";
   }
}
hier der resize:
PHP-Code:
$src $userfile;
    
$size getImageSize($src);
    
$target    "resize.jpg";
    
$quality     "90";
    
$width $size[0];
    
$height $size[1];
    
$max_width 50;
    
    
    if (
$width $max_width)
    {
                    
$convert $max_width/$width;
                    
$dest_width $max_width;
                    
$dest_height ceil($height*$convert);
                    echo 
"<span class=\"style4\">   größe geändert!</span><br>";
                    echo 
"$dest_width<br>";
                    echo 
"$dest_height<br>";
                    echo 
"$target";
     } 
     else
                  {
                    
$dest_width $src_width;
                    
$dest_height $src_height;
                  }
                   
$dst_img imagecreatetruecolor($dest_width,$dest_height);
                  
imagecopyresampled($dst_img$src0000$dest_width$dest_height$width$height);
                  
imagejpeg($dst_img"$target"$quality); 
jetzt versteh ich nich ganz wie das Bild mit der "resize" Version upgeloaded werden kann

Also ich will erst die Bildgröße ändern und dann uploaden!
Ich vermute ja, dass es über die Funktion
PHP-Code:
move_uploaded_file() 
funktionieren müsste... aber bekomm es einfach nich gebacken

danke für die Hilfe
Tzetze
Tzetze ist offline   Mit Zitat antworten
Alt 01.02.2007, 17:39   #9
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Die Funktion move_uploaded_file() verschiebt eine bereits hochgeladene Datei aus dem temporären Ordner auf dem Server in ihren Zielordner. Du kannst keine Datei erst resizen und dann hochladen, es sei denn Du machst das manuell mit einem Grafikprogramm. PHP ist eine Sprache die serverseitig ausgeführt wird - es müssen also erst mal Dateien zum Server übertragen werden, damit ein resize statt finden kann.
Ich würde empfehlen, daß Du dich hier im Forum etwas umschaust, denn gerade dieses Thema wurde hier schon sehr sehr oft besprochen und erklärt. Ansonsten einfach das Script runterladen das ich oben gepostet habe und den Quelltext studieren. Das meiste ist kommentiert, so daß es einfach sein sollte zu verstehen was da vor sich geht.

Geändert von Rizzo (01.02.2007 um 17:41 Uhr).
Rizzo ist offline   Mit Zitat antworten
Alt 01.02.2007, 18:07   #10
TP-Member
 
Registriert seit: Aug 2005
Tzetze macht alles soweit korrekt
kk, das war wohl ein Denkfehler!
trotzdem danke
Tzetze ist offline   Mit Zitat antworten
Alt 09.02.2007, 16:39   #11
TP-Moderator
 
Benutzerbild von His.Master's.Voice
 
Registriert seit: Mar 2006
His.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine UserHis.Master's.Voice lebt für das TP und seine User
EDIT: Hat sich bereits erledigt.
__________________
Gruß HMV


Geändert von His.Master's.Voice (11.02.2007 um 12:44 Uhr).
His.Master's.Voice ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
JPEG-Bilder hochladen und in Größe reduzieren JPEG-Bilder hochladen und in Größe reduzieren
« XML-Daten im Netscape einlesen | Seiten »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu