Diese Funktion erstellt ein Color für ein Image anhand des HTML-Wertes der Farbe.
Das # kann mitgegeben oder weggelassen werden. Es wird nach 6 hexadezimalen Ziffern [:xdigit:] geprüft.
Die Erklärungen zum Code habe ich der Einfachheit halber direkt in den Code geschrieben
Code php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /**
* create a imageColor by a html #-Value (#FFFFFF, #00FFFF, FFFFFF etc.)
* @param Image
* @param String color als Hexwert
* @return ImageColor
*/
function imageColorFromHtml(&$image, $color){
//Der Pattern zum zerlegen des Strings in seine RGB-Werte.
//String beginnt mit oder ohne ein #.
//gefolgt von 3 mal 2 [:xdigit:] ([:xdigit:]:Hexadecimal digit characters)
//und endet danach
$hex_color_pattern6 = '/^#?([[:xdigit:]]{2})([[:xdigit:]]{2})([[:xdigit:]]{2})$/';
//Für die Kurzform ists dasselbe, einfach nur 3 [:xdigit:]
$hex_color_pattern3 = '/^#?([[:xdigit:]])([[:xdigit:]])([[:xdigit:]])$/';
//Falls es sich um eine Kurzform handelt, die Werte verdoppeln
$color = preg_replace($hex_color_pattern3, '\1\1\2\2\3\3', $color);
//hexwert parsen
if(!preg_match($hex_color_pattern6, $color, $rgb)) return false;
//Gefundener Gesammtstring entfernen. Der erste Eintrag im Array ist der gesammte gefundene String.
//Das brauchen wir ncht
array_shift($rgb);
//Alle Hexwerte in Decimale Werte wandeln
//ERS: 20.01.2012: Array_walk durch array_map ersetzte
//array_walk($rgb, create_function('&$item, $key', '$item = hexdec($item);'));
$rgb = array_map('hexdec', $rgb);
//Und zuguter letzte mit ImageColorAllocate() und unseren RGB-Werten den ImageColor erstellen
return ImageColorAllocate($image, $rgb[0], $rgb[1], $rgb[2]);
} |
Und so kann dann das ganze angewendet werden....
Code php:
1 2 3 4 5 6 7 8 | <?php
header ("Content-type: image/png");
$im = @ImageCreate (50, 100) or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
//Hier kommt der Funktionsaufruf
$text_color =imageColorFromHtml($im, '#0A0A0A');
ImageString ($im, 1, 5, 5, "Ein Test-String", $text_color);
ImagePNG ($im);
?> |




Bereiche
Kategorien
Forum - Programming




tutorials.de-Systemmitteilung