imagecopyresized macht bilder ranzig
delink2000
- php
Hallo,
ich habe ein Problem mit der Grafikfunktion
imagecopyresized(), funktioniert so weit einwandfrei,
nutze ich für Thumbnails.
Ich bin allerdings mit dem Ergebnis nicht zufrieden.
Die Bilder werden offenbar ranzig konvertiert. Die eingestellte
Kompression habe ich auf ein Minimum gesetzt und trotzdem werden die Bilder in einer unsauberen Qualität ausgegeben.
Die Bilder sehen so aus, als ob ein grosses Bild in einer HTML Seite durch width und height Angaben verkleinert wird. Dann wird es eben auch ranzig (Schrägen werden treppenförmig)
Ich habe die Größenangaben für die Bilder versuchsweise herausgenommen, um zu testen ob es an den Größenangaben liegt... leider Fehlanzeige.
Weiss irgend jemand Rat oder ist die Konvertierfunktion in der GD Bibliothek so schlecht ?
Tag !
Ich bin allerdings mit dem Ergebnis nicht zufrieden.
Verständlich :-) Das was diese Funktion produziert kannste auch grob in der Pfeife rauchen.
Die Bilder werden offenbar ranzig konvertiert. Die eingestellte
Ich habe die Größenangaben für die Bilder versuchsweise herausgenommen, um zu testen ob es an den Größenangaben liegt... leider Fehlanzeige.
Nein, das ist die Funktion, die die Thumbnails erzeugt, die ist einfach miserabel.
Schau Dir mal unter http://www.php.net/manual/en/function.imagecopyresized.php die Kommentare an, da steht relativ ein Kommentar von rze@counter-strike.net, der dort eine Funktion vorstellt, die wesentlich bessere Ergebnisse produziert, dafür aber ziemlich langsam ist.
Wenn Du Dir Dein PHP/GD selber kompilierst schlage ich Dir den ebenfalls in den Kommentaren erwähnten Weg von aleczapka@gmx.net vor, nämlich eine extra Funktion im Quellcode einzufügen und die dann mit rein zu kompilieren.
Weiss irgend jemand Rat oder ist die Konvertierfunktion in der GD Bibliothek so schlecht ?
Die PHP-Funktion für bikubische Filterung (von rze@counter-strike.net):
------------------------------
function ImageCopyResampleBicubic ($dst_img, $src_img, $dst_x, $dst_y,
$src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
/*
port to PHP by John Jensen July 10 2001 -- original code (in C, for the
PHP GD Module) by jernberg@fairytale.se
*/
{
for ($i = 0; $i < 256; $i++) { // get pallete. Is this algoritm
correct?
$colors = ImageColorsForIndex ($src_img, $i);
ImageColorAllocate ($dst_img, $colors['red'], $colors['green'],
$colors['blue']);
}
$scaleX = ($src_w - 1) / $dst_w;
$scaleY = ($src_h - 1) / $dst_h;
$scaleX2 = $scaleX / 2.0;
$scaleY2 = $scaleY / 2.0;
for ($j = $src_y; $j < $dst_h; $j++) {
$sY = $j * $scaleY;
for ($i = $src_x; $i < $dst_w; $i++) {
$sX = $i * $scaleX;
$c1 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX,
(int) $sY + $scaleY2));
$c2 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX,
(int) $sY));
$c3 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX
$red = (int) (($c1['red'] + $c2['red'] + $c3['red'] + $c4['red']) /
4);
$green = (int) (($c1['green'] + $c2['green'] + $c3['green'] +
$c4['green']) / 4);
$blue = (int) (($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue'])
/ 4);
$color = ImageColorClosest ($dst_img, $red, $green, $blue);
ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color);
}
}
}
-------------------------------------
Ciao,
Harry
vielen vielen Dank für deine Tipps Harry,
ich habs befürchtet, dass die Funktion scheisse ist...
Hallo Harry,
Die PHP-Funktion für bikubische Filterung (von rze@counter-strike.net)...
habe ich eingebaut und funzt. Thumbnails werden schöner dargestellt, aber leider ist auch die Funktion nicht das optimale. Für kleine Thumbs (so bis 200 Pixel) kann man die prima verwenden. Hier ist auch die Rechenzeit noch erträglich (bei 300´er Proz. ca. 5 sek / Bild.)
Will man wie ich aus großen Vorlagen (1024 x 768) an die Bildschirmgröße (z.B. 800x600) angepasste jpg´s machen, dauert es erst mal ewig (ca. 1,5 Min.) bis das Bild generiert wird und das Ergebnis ist auch hier bescheiden (Stufenbildung im Bild). Damit mein lokaler Rechner überhaupt die Funktion ausführt, mußte ich set_time_limit() im skript auf 300 ! setzen.
Für die Speicherung von kleineren Thumbs ist die Funktion also wunderbar, für die Konvertierung in grosse Bilder (>200 Pixel) bin ich noch auf der Suche....
Trotzden vielen Dank nochmal, hat mir schon geholfen...
Det
Holladirührei !
Für die Speicherung von kleineren Thumbs ist die Funktion also wunderbar, für die Konvertierung in grosse Bilder (>200 Pixel) bin ich noch auf der Suche....
Kopier das Script in den Quelltext rein und kompilier es mit. Dann sollte es wesentlich schneller laufen.
Nur an der Qualität der Bilder ändert das freilich nix.
Ciao,
Harry
Hi,
soso, deine bilder sind also ranzig ? hast du auf das haltbarkeitsdatum geguckt, und wieviel fett ist in deinen bildern ?
AFAIK ist ranzig = "vergammeltes" fett. nun ja, wenn du sowas auf deiner web-seite hast, brauchst du dich wenigstens nicht wundern wenn dir die besucher ausbleiben *g*
gruss
Blau