WinFuture-Forum.de: Php Bildupload, Tn Erzeugen, Orig. Bild Nicht Mit Uploaden? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Bildupload, Tn Erzeugen, Orig. Bild Nicht Mit Uploaden?


#1 Mitglied ist offline   -=[Mad]=- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 61
  • Beigetreten: 05. Juli 05
  • Reputation: 0

geschrieben 09. August 2007 - 08:34

Moin moin, wie im Tietel schon beschrieben, zerbrech ich mir hier grad mein Kopf an meinen Uploadscript.

Bei dem Upload wähle ich ein Bild, Foto etc. aus, bei betätigen des Buttons wird das dann automatisch verkleinert und zusätzlich ein Thumbnail erzeugt. Das Problem was ich dabei habe, ist das das originalbild immer mit hochgeladen wird. Nun hab ich das so gelöst, dass nach jedem Durchgang per unlink das originale Bild automatisch gelöscht wir um Speicherplatz zu sparen. Damit hab ich allerdings trotzdem noch eine hohe trafik und noch dazu kommt, das dass script später auf einem freeserver liegt wo max 10 sek. zeit bleibt das bild zu verarbeiten.
Gibt es eine Möglichkeit nur die verkleinerten bilder ohne das orig. File hoch zu laden?
Und Bringt mir das dann überhaupt etwas, da es ja etwas dauert, bis das script das Bild verkleinert hat?
Hoffe mir kann jemad helfen.
Hier mal mein script zum nachvolziehen.
if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $uploadverzeichnis.'/'.$savename)) { 
// Dateigroesse und Bildabmessungen auslesen  
$dateigroesse = filesize($uploadverzeichnis.'/'.$savename); 
$picinfo = getimagesize($uploadverzeichnis.'/'.$savename); 
//---------------------------------------------------------------------
  $PicPathIn="$uploadverzeichnis/"; 
  $PicPathOut="$uploadverzeichnis/"; 
  // Orginalbild 
  // Bilddaten feststellen 
  $size=getimagesize("$PicPathIn"."$savename");  
  $breite=$size[0]; 
  $hoehe=$size[1]; 

// ----THUMBNAIL ERZEUGEN-----------------------
if($size[2]==2) {    
//--------ANZEIGEBILD------------------------------------
  $showHoehe=intval($hoehe*$showBreite/$breite);
$altesBild=ImageCreateFromJPEG("$PicPathIn"."$savename"); 
  $show=ImageCreateTrueColor($showBreite,$showHoehe); 
  ImageCopyResized($show,$altesBild,0,0,0,0,$showBreite,
$showHoehe,$breite,$hoehe); 
  ImageJPEG($show,"$PicPathOut"."show"."$savename"); 
  
//--------THUMBNAIL------------------------------------
$org_img ="$PicPathIn"."$savename";
$xy_org = getimagesize($org_img);
$OriginalHoehe = $xy_org[1];
$OriginalBreite = $xy_org[0];
if($OriginalHoehe > $OriginalBreite)
{
$ThumbnailBreite = 150;
$ThumbnailHoehe = 150;
}
else{
$ThumbnailBreite = 105;
$ThumbnailHoehe = 105;
}
@$Skalierungsfaktor = $OriginalHoehe/$ThumbnailHoehe;
@$ThumbnailBreite = intval($OriginalBreite/$Skalierungsfaktor);
$OriginalGrafik = ImageCreateFromJPEG($org_img);
$ThumbnailGrafik = imagecreatetruecolor($ThumbnailBreite, $ThumbnailHoehe);
imagecopyresampled($ThumbnailGrafik, $OriginalGrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
$ThumbnailGrafikSchnitt = imagecreatetruecolor(105, 105);
imagecopy($ThumbnailGrafikSchnitt, $ThumbnailGrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe);
ImageJPEG($ThumbnailGrafikSchnitt,"$PicPathOut"."TN"."$savename"); 

} 
unlink("$PicPathOut"."$savename");
}

0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 09. August 2007 - 09:11

Hi,

also das Bild muss immer hochgeladen werden, denn wie soll es sonst vom Skript - das ja auf dem Server liegt - verarbeitet werden?

Zum Speichern des Bildes: Du speicherst das bearbeitete Bild sowieso mit ImageJPEG, deshalb brauchst du die Hochgeladene Datei ja gar nicht "fest" speichern zu Beginn, also kein move_uploaded_file und somit auch kein unlink.

Du kannst das Bild gleich von $_FILES-Array aus bearbeiten (den unter $_FILES['userfile']['tmp_name'] ist es zwischengespeichtert, solange das Skript läuft):
$dateigroesse = filesize($_FILES['userfile']['tmp_name']); 
$picinfo = getimagesize($_FILES['userfile']['tmp_name']);

usw.

Aber zu deinem Skript selbst: Das scheint nicht sehr effizient gemacht zu sein.
Zu Beginn frägst du zweimal die Bildmaße ab (getimagesize). Dann nachdem du das show...jpg erstellt hast frägst du die Maße nochmal ab. Einmal reicht hier vollkommend aus.

Falls die execution-Zeit auf dem "Freeserver" nicht ausreicht, könntest du das erzeugen von show...jpg und vom TN...jpg in zwei verschiedene Skripte aufteilen. Also zum Beispiel, dass nach dem Bilderzeugungsskript der Browser auf eine andere Seite weitergeleitet wird (hier wird z.B. der Dateiname des show...jpg mit übergeben), welches zu dem vorhergehenden Bild ein Thumbnail erzeugt. Ist zwar nicht elegant, aber löst dein Problem.

Gruß,
Stefan

Dieser Beitrag wurde von Diewie bearbeitet: 09. August 2007 - 09:13

0

#3 Mitglied ist offline   -=[Mad]=- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 61
  • Beigetreten: 05. Juli 05
  • Reputation: 0

geschrieben 09. August 2007 - 09:34

Danke für deine Tips, werd das mal versuchen umzubasteln, überflüssigen code rausschmeissen und gucken was dann passiert.
Auf die idee mit der umleitung bin ich gar nicht gekommen, aber wenns geht besser als ständig ne Fehlermeldung zu bekommen. danke ersteinmal.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0