Every "save file" for jpeg images changes the quality and you loose details (the lossless compression was defined for the jpeg2000 standard, but that file format was "dead on arrival").
You may not see compression artefacts in "normal images", but in high quality images with a lot of details. No offence, but you attached image is not a good example for a lot of details
See also the link I provided some posts earlier
Normally this lossy nature of JPEG data is not very noticeable. However it can become noticeable when you either load and save a JPEG image multiple times or use a very low quality with a diagram showing sharp color changes.
However as long as you don't load or re-use JPEG images over and over (preserve and apply operations from the original source), it is still a good file format even image types it is not particularly good at handling.
For reading/removing/manipulation exif and other meta information offline I prefer a tool called exiftool
, which is a set of perl scripts (a win and mac wrapper interface is also provided by the author and/ or friends of exiftool). This tool doesn't (in most cases) touch the image data with the file, it just reads and writes the meta data.
But, being a perl script, is not as easy to include in a php application. Therefore I follow a project called pel
(PHP Image Library), but it looks not ready yet.
So, whenever my new extension will be ready, the end user will have a chance to decide whether he will (during upload) remove exif data, resize images, rotate images ... because every function will result in loosing quality because of compression and I will give him hints to do those things beforehand on his local device because he has a lot more control than in a automated background process.
And again, thanks for the png hint, I opened a issue
so that hint won't get lost