URL: https://www.overclockers.at/coding-stuff/phpgd_problem_mit_imagecopyresized_150049/page_1 - zur Vollversion wechseln!
ich habe ein script welches 2 bilder einliest. das eine ist das bild was ge-watermarked werden soll (jpeg), das andere ist das watermark (gif). bevor das watermark über das pic gelegt wird wirds noch auf die größe angepasst.
das problem is jetz dass das ergebnis ($newwatermark) einfach schwarz ist. mittlerweilie bin ich draufgekommen dass es daran liegt dass das watermark als gif transparenz enthält. wenn ich das selbe gif ohne transparenz verwende funktionierts, nur die transparenz brauch ich weil ich das watermark eben mit alphablending über das gesamte pic lege.Code: PHP$watermarkcopywidth = $origwidth * 0.9; $watermarkcopyheight = $watermarkcopywidth / ($watermarkwidth / $watermarkheight); $newwatermark = ImageCreateTruecolor($watermarkcopywidth,$watermarkcopyheight); ImageCopyResized($newwatermark,$watermark, 0,0,0,0, $watermarkcopywidth,$watermarkcopyheight, $watermarkwidth,$watermarkheight);
solved über ein workaround:
gif ohne transparency, dafuer mit markanter hintergrundfarbe und selbige dann durch transparency ersetzt.
Code: PHP$gay = imageColorAllocate ($newwatermark, 255, 0, 255); ImageColorTransparent($newwatermark,$gay);
Ich weiss, es ist schon solved... aber 
Wenn du statt einem GIF ein PNG verwendest hast du's viel einfacher PLUS du hast Farben mit ALPHA-Channel, also kannst du schöne Kanten usw. erzeugen 
Noch was: Wenn du das Watermark im GD oder GD2 Format ablegst und dann immer dieses verwendest, solltest du wesentlich bessere Performance erreichen, da das GD(2) Format im wesentlichen einem Memory-Dump entspricht, was natürlich das laden beschleunigt.
okay, danke für den tipp. wär nur noch gut zu wissen wie ich ein pic als gd speichere 
hast einen function-tip wie ich das alpha für einzelne channels verarbeiten kann?
Speichern: http://mirrors.inway.cz/manual/en/function.imagegd2.php bzw. http://mirrors.inway.cz/manual/en/function.imagegd.php - kommt halt darauf an welche GD du verwendest.Zitat von flockyokay, danke für den tipp. wär nur noch gut zu wissen wie ich ein pic als gd speichere
hast einen function-tip wie ich das alpha für einzelne channels verarbeiten kann?

ah, also doch mit imagegd2... gut danke
naja eigentlich hab ich eh das gemeint was du gemeint hast 
mit ImageColorAllocateAlpha gehts ja anscheinend, nur hab ich ned ganz überrissen was das jetz genau macht. wenn ich mir das beispiel im manual anschau dann werden mal farben im pic mit einem alphawert definiert. jetz weiß ich aber nicht genau was ich damit anfangen soll, bzw. WIE ich anfangen soll. was ich ja will is das watermarkpic herzunehmen und für bestimmte farben alphawerte zu verteilen damit das watermark im endeffekt nicht 'jaggy' ist, das heisst ich brauch dazwischen auch farben, aber das wär ja mühsame kleinarbeit... oder hast du was anderes gemeint?
Du nimmst dein Watermark-Pic, nimmst Photoshop - oder ein ähnliches Programm - nimmst die Ebene, setzt sie auf x% Alpha und speicherst das ganze als PNG ab. GD2 sollte afaik schon volles Alpha usw. unterstützen.
Auf die Art reduzierst du auch die Arbeit die das Script zu machen hat...
hm naja ich hab jetz mal testweise das watermark ziemlich geblured (=>verwischt) damit der effekt besser sichtbar ist, für die einzelnen channels alpha festgelegt, das ganze hab ich dann als png gespeichert, is auch transparent. aber jetz komm ich wieder auf mein ursprüngliches problem zurück, ImageCopyResized nimmt mir die transparency wieder nicht. was transparent sein sollte ist wieder schwarz... wie gesagt gehts nur ums resizen, wenn ich das pic in der originalgröße nehmen könnte dann wär alles kein problem.
hmm, und du hast sicher als png-24 gespeichert?
naja es hat 32 bit farbtiefe, solltens zwingend 24 sein?
öh 32 bit PNG gibts afaik nicht, nur 24 bit Farbe + 8 Bit Alpha...
Schon imagecopyresampled probiert?
Das kommt mir echt komisch vor... Das einzige was das erklären würde is dass die GD einfach kein Alpha beim resizen unterstützt...
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026