Slap the previous poster, he's a moron
Firstly, Graphic files, text files, everything on a computer is binary, regardless of the method of encoding used.
Any buffer which is incorrectly terminated or allows for unspecified length copying larger than the size of the actual buffer can overflow into the stack. Similarly with much larger binary chunks (eggs) the heap can spew all over the stack, and point the EIP (extended instruction pointer) into a point inside of the buffer called a nop sled. The nop sled will then run a bunch of 0x90's all the way down to a shell code (the final and most important part of an egg), this in turn will execute and execute it will arbitrary code.
All the programmer needs to do is accidentally allow for something larger than the allocated memory slot to be copied into that block, an easy mistake, originally discovered as a result of stray strcpy commands copying service instructions for eg. apache into other buffers, however it has been demonstrated on much more rudimentary routines such as memcpy.
The standard fix for this kind of bug is strncpy or using sizeof and truncation methods to prevent a buffer larger than the target memory slot from being copied.
Image files are not immune, you are a moron.
Peace out reg.