WinFuture-Forum.de: [php] Grafikfunktionen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[php] Grafikfunktionen


#1 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 25. März 2006 - 18:06

Ich lade JPEG-Dateien per HTML-Formular auf einen Server. Bei der Gelegenheit lasse ich auch gleich ein thumbnail mit PHP4 erstellen.

Das Problem ist, dass die Qualität der erstellten Grafiken eher bescheiden ist, verglichen mit einem in GIMP umgerechneten Bild.

Hier mal der betreffende Quelltext:
if (copy($_FILES["file"]["tmp_name"], "../imgs/".$filename)) {
	// Erzeugen eines neuen Bildes im Speicher
	$imgA = imagecreatefromjpeg("../imgs/".$filename);
	// Ausmaße der Originaldatei
	$img_size = getimagesize("../imgs/".$filename);
	// Breite
	$width = $img_size[0];
	// Höhe
	$height = $img_size[1];
	// resize
	if ($width > $height) {
		$new_width = 128;
		$new_height = $height * 128 / $width;
	} else {
		$new_width = $width * 128 / $height;
		$new_height = 128;
	}

	// Zeiger auf das neue Bild
	$imgB = ImageCreateTrueColor(128,128);
	// weiss
	$white = ImageColorAllocate ($imgB, 255, 255, 255);
	imagefill($imgB, 0, 0, $white);
	
	// Ausgangskoordinaten
	$dst_x = (128 - $new_width) / 2;
	$dst_y = (128 - $new_height) / 2;
	
	// kopieren in das neue Bild
	imagecopyresized($imgB, $imgA, $dst_x, $dst_y, 0,0, $new_width, $new_height, $width, $height);
	// erzeugen der neuen Bilddatei
	imagejpeg($imgB, "../imgs/tn/tn_".$filename, 90);
}


Eventuell weiß jemand Mittel und Wege, diese Prozedur besser durchzuführen, oder kennt Parameter, um qualitativ was rauszukitzeln oder was weiß ich. Bin wie immer für jeden Hinweis dankbar.

Dieser Beitrag wurde von axx bearbeitet: 25. März 2006 - 18:09

0

Anzeige



#2 _rjchio_

  • Gruppe: Gäste

geschrieben 25. März 2006 - 19:25

imagejpeg($imgB, "../imgs/tn/tn_".$filename, 90);

Wieso stellst du die Qualität nicht auf 100? Hast das Script wohl aus dem Internet :blink:

Richtig:
imagejpeg($imgB, "../imgs/tn/tn_".$filename, 100);


MfG rjchio
0

#3 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 25. März 2006 - 20:56

Beitrag anzeigenZitat (rjchio: 25.03.2006, 19:25)

Hast das Script wohl aus dem Internet ;D

Haha, da stellt man mal eine Frage und wird gleich des geistigen Diebstahls verdächtigt. Die Antwort ist: Nein, ich benutze das Handbuch. :blink:
Warum stelle ich die Qualität nicht auf 100? Weil auch die Dateigröße eine Rolle spielt, und bei herkömmlichen Grafikanwendungen 80-85 dicke ausreicht.

Edit: Ich bemängele auch weniger die qualität der Kompression, sondern die der Größenumrechnung. Ich habe mal eine Ansicht angehängt. Links mit PHP umgerechnet, rechts mit GIMP (bicubic).Angehängtes Bild: beispiel.jpg

Dieser Beitrag wurde von axx bearbeitet: 25. März 2006 - 23:41

0

#4 _rjchio_

  • Gruppe: Gäste

geschrieben 26. März 2006 - 07:04

Beitrag anzeigenZitat (axx: 25.03.2006, 21:56)

Haha, da stellt man mal eine Frage und wird gleich des geistigen Diebstahls verdächtigt. Die Antwort ist: Nein, ich benutze das Handbuch. :blink:
Warum stelle ich die Qualität nicht auf 100? Weil auch die Dateigröße eine Rolle spielt, und bei herkömmlichen Grafikanwendungen 80-85 dicke ausreicht.

Edit: Ich bemängele auch weniger die qualität der Kompression, sondern die der Größenumrechnung. Ich habe mal eine Ansicht angehängt. Links mit PHP umgerechnet, rechts mit GIMP (bicubic).Anhang attachment
Gib uns doch mal das Originalbild, dann können wir selbst etwas ausprobieren. ;D
Vielleicht wird das Bild auch etwas besser wenn du PNG verwendest...

MfG rjchio
0

#5 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 26. März 2006 - 10:16

Ich benutze jetzt ImageCopyResampled statt ImageCopyResized und das Ergebnis ist meiner Meinung nach schon viel ansprechender. Leider habe ich in der Dokumentation keinen Hinweis gefunden, welcher Algorithmus für die Umrechnung genutzt wird, aber egal.

Beitrag anzeigenZitat (rjchio: 26.03.2006, 07:04)

Gib uns doch mal das Originalbild, dann können wir selbst etwas ausprobieren.

Dafür kannst du jede JPEG-Datei benutzen. Vielen Dank für deine Bemühungen.

[erledigt]
0

Thema verteilen:


Seite 1 von 1

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