|
imagewbmp
Output image to browser or file
(PHP 4 >= 4.0.1, PHP 5)
Code Examples / Notes » imagewbmpmarius
You could also use: @ImageWbmp ($im, "test.wbmp"); But I haven't test ist yet flapper
There is a hidden third parameter in the ImageWbmp function that serves as a threshold-holder. When using the function as in: ImageWbmp ($im, "test.wbmp"); it generates a warning: Warning: imagewbmp: invalid threshold value '-1'. It must be between 0 and 255 in blablabla It does generate the image though but for a WML app. it cannot be used since the warning is laden with HTML-tags. To prevent the warning use the following example: ImageWbmp ($im, "test.wbmp", 0); The warning is no longer generated. lukeross
As has been commented before, GD doesnt do a very good translation to 2-colours, especially for photos. The following routine converts to two colours, I believe using error diffusion (the algorithm's nicked off news). It's slow, but just about adequate for small images and low load. I suspect it can be made much more efficient :-) function ImageColorFloydSteinberg($dst_img, $src_img) { ImageColorAllocate($dst_img, 0,0,0); ImageColorAllocate($dst_img, 255,255,255); $grey_img = ImageCreate(ImageSX($src_img), ImageSY($src_img)); for ($a = 0; $a <= 255; $a++) ImageColorAllocate($grey_img, $a,$a,$a); for($x = 0; $x <= ImageSX($src_img); $x++) { for($y = 0; $y <= ImageSY($src_img); $y++) { $color = ImageColorsForIndex($src_img, ImageColorAt($src_img, $x, $y)); $greyscale = .299 * $color["red"] + .587 * $color["green"] + .114 * $color["blue"]; ImageSetPixel($grey_img, $x, $y, ImageColorClosest($grey_img, $greyscale, $greyscale, $greyscale)); } } for($x = 0; $x <= ImageSX($src_img); $x++) { for($y = 0; $y <= ImageSY($src_img); $y++) { $color = ImageColorsForIndex($grey_img, ImageColorAt($grey_img, $x, $y)); if ($color["red"] > 128) { ImageSetPixel($dst_img, $x, $y, ImageColorClosest($dst_img,255,255,255)); $err = $color["red"] - 255; } else { ImageSetPixel($dst_img, $x, $y, ImageColorClosest($dst_img,0,0,0)); $err = $color["red"]; } if ($x != ImageSx($src_img)) { $color2 = ImageColorsForIndex($grey_img, ImageColorAt($grey_img, $x+1, $y)); $newgrey = $color2["red"] + $err * 7 / 16; ImageSetPixel($grey_img, $x+1, $y, ImageColorClosest($grey_img,$newgrey, $newgrey, $newgrey)); } if ($x != 0) { $color2 = ImageColorsForIndex($grey_img, ImageColorAt($grey_img, $x-1, $y)); $newgrey = $color2["red"] + $err * 3 / 16; ImageSetPixel($grey_img, $x-1, $y, ImageColorClosest($grey_img,$newgrey, $newgrey, $newgrey)); } if ($y != ImageSy($src_img)) { $color2 = ImageColorsForIndex($grey_img, ImageColorAt($grey_img, $x, $y+1)); $newgrey = $color2["red"] + $err * 5 / 16; ImageSetPixel($grey_img, $x, $y+1, ImageColorClosest($grey_img,$newgrey, $newgrey, $newgrey)); } if ($x != ImageSx($src_img) && $y != ImageSy($src_img)) { $color2 = ImageColorsForIndex($grey_img, ImageColorAt($grey_img, $x+1, $y+1)); $newgrey = $color2["red"] + $err / 16; ImageSetPixel($grey_img, $x+1, $y+1, ImageColorClosest($grey_img,$newgrey, $newgrey, $newgrey)); } } } imagedestroy($grey_img); } To output your WBMP, use ImageWBMP($final_img, "", ImageColorClosest(255,255,255)); |
Change Languagegd_info getimagesize image_type_to_extension image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imageconvolution imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefilter imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imagegrabscreen imagegrabwindow imageinterlace imageistruecolor imagejpeg imagelayereffect imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp imagexbm iptcembed iptcparse jpeg2wbmp png2wbmp |