quintus Posted April 2, 2007 Share Posted April 2, 2007 Hey, I am totally new here, and very new to PHP altogether. I've been a student of C++ for 4 years now, but ive decided to try my hand at web-programming. I have been writing short little PHP experiments the last few weeks to try to learn php in my spare time and I've thought of a really neat one, but I cant find much information on image reading on the web. Almost all information about reading images is about uploading them, resizing them, or even writing them. I've found very little regarding just reading color data pixel by pixel. Sometimes the simple things are the most elusive! My idea is to write a php script with takes a GET variable "image" which is the url for a source image. like so: ".../phptests/htmlimage.php?image=http://www.somedomain.com/images/someimage.jpg" I assume the line $image = _GET['image']; would store the url in $image as a string, am i right? (im pretty new at php if you cant tell!) My idea was to write a converter which would then open this image and read it pixel for pixel and produce an ASCII art version of that image. I am pretty new at php so It might be hard for me to install extra libraries at this point, but as I understand it php has a lot of built in image functions, is that right? I would really appreciate any tips or thoughts you'd have on this. If someone could post code which would just open the file and read out the colors into html, that would be a great start! Like: <html> <body> 0,0 = #FF0000 1,0 = #FFFFFF 2,0 = #EEEEAA </body> </html> Thanks!! -- Thomas Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/ Share on other sites More sharing options...
Warptweet Posted April 2, 2007 Share Posted April 2, 2007 A compeltely directory with examples, tips, includes, and everything you need for image functions is readily available for you to read and get an understanding on how to work it. I even searched it for you and found the link, click: http://www.php.net/manual/en/ref.image.php Here is a list of all image functions: gd_info — Retrieve information about the currently installed GD library getimagesize — Get the size of an image image_type_to_extension — Get file extension for image type image_type_to_mime_type — Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype image2wbmp — Output image to browser or file imagealphablending — Set the blending mode for an image imageantialias — Should antialias functions be used or not imagearc — Draws an arc imagechar — Draw a character horizontally imagecharup — Draw a character vertically imagecolorallocate — Allocate a color for an image imagecolorallocatealpha — Allocate a color for an image imagecolorat — Get the index of the color of a pixel imagecolorclosest — Get the index of the closest color to the specified color imagecolorclosestalpha — Get the index of the closest color to the specified color + alpha imagecolorclosesthwb — Get the index of the color which has the hue, white and blackness nearest to the given color imagecolordeallocate — De-allocate a color for an image imagecolorexact — Get the index of the specified color imagecolorexactalpha — Get the index of the specified color + alpha imagecolormatch — Makes the colors of the palette version of an image more closely match the true color version imagecolorresolve — Get the index of the specified color or its closest possible alternative imagecolorresolvealpha — Get the index of the specified color + alpha or its closest possible alternative imagecolorset — Set the color for the specified palette index imagecolorsforindex — Get the colors for an index imagecolorstotal — Find out the number of colors in an image's palette imagecolortransparent — Define a color as transparent imageconvolution — Apply a 3x3 convolution matrix, using coefficient and offset imagecopy — Copy part of an image imagecopymerge — Copy and merge part of an image imagecopymergegray — Copy and merge part of an image with gray scale imagecopyresampled — Copy and resize part of an image with resampling imagecopyresized — Copy and resize part of an image imagecreate — Create a new palette based image imagecreatefromgd2 — Create a new image from GD2 file or URL imagecreatefromgd2part — Create a new image from a given part of GD2 file or URL imagecreatefromgd — Create a new image from GD file or URL imagecreatefromgif — Create a new image from file or URL imagecreatefromjpeg — Create a new image from file or URL imagecreatefrompng — Create a new image from file or URL imagecreatefromstring — Create a new image from the image stream in the string imagecreatefromwbmp — Create a new image from file or URL imagecreatefromxbm — Create a new image from file or URL imagecreatefromxpm — Create a new image from file or URL imagecreatetruecolor — Create a new true color image imagedashedline — Draw a dashed line imagedestroy — Destroy an image imageellipse — Draw an ellipse imagefill — Flood fill imagefilledarc — Draw a partial ellipse and fill it imagefilledellipse — Draw a filled ellipse imagefilledpolygon — Draw a filled polygon imagefilledrectangle — Draw a filled rectangle imagefilltoborder — Flood fill to specific color imagefilter — Applies a filter to an image imagefontheight — Get font height imagefontwidth — Get font width imageftbbox — Give the bounding box of a text using fonts via freetype2 imagefttext — Write text to the image using fonts using FreeType 2 imagegammacorrect — Apply a gamma correction to a GD image imagegd2 — Output GD2 image to browser or file imagegd — Output GD image to browser or file imagegif — Output image to browser or file imageinterlace — Enable or disable interlace imageistruecolor — Finds whether an image is a truecolor image imagejpeg — Output image to browser or file imagelayereffect — Set the alpha blending flag to use the bundled libgd layering effects imageline — Draw a line imageloadfont — Load a new font imagepalettecopy — Copy the palette from one image to another imagepng — Output a PNG image to either the browser or a file imagepolygon — Draws a polygon imagepsbbox — Give the bounding box of a text rectangle using PostScript Type1 fonts imagepsencodefont — Change the character encoding vector of a font imagepsextendfont — Extend or condense a font imagepsfreefont — Free memory used by a PostScript Type 1 font imagepsloadfont — Load a PostScript Type 1 font from file imagepsslantfont — Slant a font imagepstext — Draws a text over an image using PostScript Type1 fonts imagerectangle — Draw a rectangle imagerotate — Rotate an image with a given angle imagesavealpha — Set the flag to save full alpha channel information (as opposed to single-color transparency) when saving PNG images imagesetbrush — Set the brush image for line drawing imagesetpixel — Set a single pixel imagesetstyle — Set the style for line drawing imagesetthickness — Set the thickness for line drawing imagesettile — Set the tile image for filling imagestring — Draw a string horizontally imagestringup — Draw a string vertically imagesx — Get image width imagesy — Get image height imagetruecolortopalette — Convert a true color image to a palette image imagettfbbox — Give the bounding box of a text using TrueType fonts imagettftext — Write text to the image using TrueType fonts imagetypes — Return the image types supported by this PHP build imagewbmp — Output image to browser or file imagexbm — Output XBM image to browser or file iptcembed — Embed binary IPTC data into a JPEG image iptcparse — Parse a binary IPTC block into single tags. jpeg2wbmp — Convert JPEG image file to WBMP image file png2wbmp — Convert PNG image file to WBMP image file Enjoy! Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-219523 Share on other sites More sharing options...
JBS103 Posted April 2, 2007 Share Posted April 2, 2007 Here is a quick hack at it... <?php //Get image //May want to eventually set up a conditional to check file type automatically. This only supports png at the moment. $im = imagecreatefrompng("php.png"); //Get height and width list($width, $height, $type, $attr) = getimagesize("php.png"); //Loop through each spot for($x = 0; $x < $width; $x++) { for($y = 0; $y < $height; $y++) { //Get the pixel $rgb = imagecolorat($im, $x, $y); //Change format -> #XXXXXX $total = sprintf('#%02X%02X%02X', ($rgb >> 16) & 0xFF, ($rgb >> & 0xFF, $rgb & 0xFF); echo "$x, $y = $total<br>"; } } ?> In action: www.creativespeed.net/test.php www.creativespeed.net/php.png I really don't know how solid this is. Someone else can definitely sure it up. Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-219526 Share on other sites More sharing options...
quintus Posted April 2, 2007 Author Share Posted April 2, 2007 Wow, Great! Thanks both of you!! I will experiment with this and get back to you. thanks again! -- Thomas Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-219565 Share on other sites More sharing options...
quintus Posted April 3, 2007 Author Share Posted April 3, 2007 Hey! I have something working at least (no it didn't take me *this* long, ive been busy).... You can find a copy of my program here: http://uoregon.edu/~tgilray/HtmlImage.txt And you can try the program here: http://uoregon.edu/~tgilray/HtmlImage.php I recommend this image, its small and looks neato.... http://sxi.ngdc.noaa.gov/images/sxi_20060706_151118162_aa_13s_first.png One thing i would like to note is that while the colors still look a little off, they are much better then they used to be. I would like to point out that dispite the sample code posted by "JBS103" the HEX format for an RGB image is actually BGR, in reverse order. So i needed to make a small alteration to fix the code in that regard too. Let me know what you think! I am pretty happy with this! Think of it, you could have all the images on your site be in raw html, and at only a 5 second per image loading time cost! Wow! Hehehe, fun. Thanks again for your help too... --- Thomas Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-220319 Share on other sites More sharing options...
quintus Posted April 3, 2007 Author Share Posted April 3, 2007 Hmm, I may have had that whole BGR not RGB thing wrong.... I know it is true in many cases, but it now seems to swap red and blue a lot on some images and not on others... odd.... its also fliping some images across the y=x diagonal.... Thoughts? -- Thomas Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-220334 Share on other sites More sharing options...
jitesh Posted April 3, 2007 Share Posted April 3, 2007 Review attached script. [attachment deleted by admin] Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-220352 Share on other sites More sharing options...
dsaba Posted April 3, 2007 Share Posted April 3, 2007 this script does exactly what you are talking about I suggest studying it: http://snippets.tzfiles.com/snippet.php?id=29 also the test page for this script is here: http://www.viplyrics.com/webdeveloper/image_to_ascii.php this was written by "alittlecaptin" he is a member here on phpfreaks Link to comment https://forums.phpfreaks.com/topic/45214-reading-images/#findComment-220373 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.