this applies to anything that relies on libjpeg (PHP/GD in my case). For about a year, I just "accepted" the fact that pictures uploaded from cell phones contained extraneous bytes, and there was nothing I could do about it... until I scoured Google results and came across this fix: http://www-personal.umd.umich.edu/~dennismv/corruptjpeg.html The fix: Find the following in jdmarker.c: WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c); Change to: /* WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c); */ recompile libjpeg, recompile PHP/GD, restart Apache. if you need the source again, go to http://www.ijg.org/files/