Jump to content

Reading Images


quintus

Recommended Posts

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

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

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

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!  ;D

 

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

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.