dyn. erzeugtes Bild als Datei speichern...wie?

scanline

Erfahrenes Mitglied
Hi,
wie kann ich ein mit imagecreate() erzeugtes dyn. Bild als Detei speichern? Hab die Lösung in keinem Buch gefunden, überall steht nur, DASS es geht...sehr hilfreich :)

Oder sitz ich wieder auf 'nem Knoten, seh den Wald vor lauter Bäume nicht?

Gruß
Micha
 
PHP:
header ("Content-type: image/png");
$im = @ImageCreate (50, 100)
      or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 233, 14, 91);
ImageString ($im, 1, 5, 5, "Ein Test-String", $text_color);
ImagePNG ($im);

if (!copy ($ImagePNG ($im), "file.bak")) {
    print ("failed to copy $file...<br>\n");
}

Ich habe noch nie mit dem imageCreate gearbeitet, aber so müßte es funktionieren. Evtl. mußt du noch die Schreibrechte setzten oder den richtige Pfad angeben!
 
...

nein, das geht so nicht.

mal zur Gesamtaufgabe:
ich will ein Bild auf einen Server hochladen. Bis hierhin ist die Welt in Ordnung. Anschließend will ich die Bildgröße / Dateigröße autom. reduzieren, für den Fall, dass das bild zu groß ist.

Das wiederum geht mit imagecopyresized().
Geht auch, jedenfalls bekomme ich ein schönes verkleinertes Bild in den Browser.

So, jetzt soll das Bild auf dem Server noch gespeichert werden.
Und da fängt mein Problem an.
Oder gibt es vieleicht noch einen anderen Lösungsweg ls den über imagecopyresized()?

Gruß
Micha
 
Sendest du die Dateien über den Browser mit einem Formular?
Dann versuch mal mein Script mit deinem zu kombinieren:

PHP:
// extension fuer dateinamen
				if ($upload_type[$i] == "image/gif")
				    $ext = "gif";
				else if ($upload_type[$i] == "image/pjpg")
				    $ext = "jpg";
				else if ($upload_type[$i] == "image/pjpeg")
				    $ext = "jpeg";
				else if ($upload_type[$i] == "image/jpg")
				    $ext = "jpg";
				else if ($upload_type[$i] == "image/jpeg")
				    $ext = "jpeg";
				else {
					print 	"<font face='Arial,Helvetica,sans-serif' size='2'>
							Es d&uuml;rfen nur *.gif, *.jpg und *.jpeg geladen werden.</font>";
					exit;
				}
				
				if ($i == 0) $size = "_kl";
				if ($i == 1) $size = "_gr";
				
				// bild bauen und kopieren
				$pic[] = "$id$size.$ext";
				copy($upload[$i], "$upload_directory/$pic[$i]");
 
...

das script ist klasse, hätte diesen Teil zumindest noch coden müssen, aber die eigentliche Problemstelle ist damit nicht versorgt.

Das Problem liegt genau an dem Punkt, wo imagejpeg($im) zu einer "echten Datei" werden soll, also z.b. bild.jpg.
Dieser Übergang gelingt mir nicht. Habs auch schon mit fwrite probiert, aber der bringt kein Bild hervor sondern lediglich die Zahl "1".

Aber Du hast schon richtig vermutet, die bilder werden per Formular über den browser hochgeladen, anscließend werden sie ggf. verkleinert.

Wießt Du noch Rat?
 
Wer liest denn heutzutage noch Bücher? (vor allem solche, wo net alles drinsteht) :) :) :)

Ich hab vor einiger Zeit mal ein Tutorial geschrieben: http://www.tutorials.de/forum/showthread.php?threadid=7330

da steht z.B. auch folgender Satz drin

Eine andere Möglichkeit als die, das Bild zum Browser zu senden, wäre, das Bild auf dem Webserver zu speichern. Dazu muss man in den Befehlen imagejpg() und Co. einfach noch einen Dateinamen angeben:

imagejpg($img,"pfad/datei.jpg");


also: auch mal nen Blick in die Tutorials hier aufm Board werfen ;)


Dunsti
 
:)

ich habs gewusst,ich seh den Wald vor lauter Bäume nicht mehr! :)

Ich habe Dein Tut bereits vor Tagen studiert, hast mich ja schließlich schonmal mit der Nase draiuf gestoßen,
nur diese eine Passage glatt überlesen! Man man man.

Jedenfalls bin ich Dir sehr dankbar, auch für Deine Engelsgeduld.

Fröhliche und dankbare Grüße
Micha
 

Neue Beiträge

Zurück