Webstatt.org - Community seit 2006 - 2012 (2024?)

bild hintergrund weg rechnen

user-303
18.05.2006 13:18

hallo,

im zuge einer abschlusszeitung meiner klasse ist vorgesehen, von jedem ein bild zu machen und dieses dann irgendwo einzusetzen. vorraussetzung hierfür ist, dass das bild ausgeschnitten ist. nun ist dies bei über 100 bildert eine etwas traurige arbeit, die ich automatisieren will. hab mir auch schon ein entsprechendes script geschrieben, welches ein vorher eingestelltes farbspektrum transparent einfärbt. funktioniert auch super! das problem ist nur, wenn z.b. hautfarbe aufgrund der lichtverhältnisse genau in dieses farbspektrum passt. also dacht ich mir, man sollte erfassen, ob die fläche alle an einem stück ist....oder zumundest zusammenhängend mit einem stück der größe xx ist.
hat einer ne idee, wie man dies am besten realisiert?
hier einmal das script:
<?php
header('content-type: image/png'zwinkern;
set_time_limit(0);

$image='Bild030.jpg';

list($width, $height, $type, $attr) = getimagesize($image);
if($type == 2) {
$img = imagecreatefromjpeg($image);
} elseif($type == 3) {
$img = imagecreatefrompng($image);
}

$im = imagecreatetruecolor ($width, $height);
$trans = imagecolorallocate($im, 255, 0, 0); // rot = transparent
imagecolortransparent($im, $trans);

//pixel für pixel durchgehen...
for($x=0; $x<$width; $x++) { //horizontal
for($y=0; $y<$height; $y++) { //vertikal
$col = imagecolorat($img, $x, $y);
$rgb = imagecolorsforindex($img, $col); //farbwerte des 'alten' bildes
extract($rgb);

//farbspektrum: ne gelbe wand in meiner schule...
if($red < 256 && $green < 256 && $blue < 170 &&
$red > 156 && $green > 144 && $blue > -1) {
$col = $trans;
}
imagesetpixel($im, $x, $y, $col); //neuer pixel auf neues bild setzen
}
}
imagedestroy($img);
imagepng($im);
?>
.

das war mein test:

das mädel hab ich einfach rein geschnitten...und hier das traurige ergebniss: