Do not re-save as JPG (or do once as much, at hi quality). Every time you do it, you add new quality loss. Work in PNG format, and only if you need it, save last version as JPG.
tweakPNG tool allows you to remove extra data, but beware not removing essential data(this is not a compressing tool). For compressing it well, I agree on using PNGcrush. I my tests, got the best compression.(there are others: PNGauntlet, Optipng, etc)
be sure on why you need to keep 300dpi, that is only needed if you are going to print. Anyway, if you need a lot of detail, reducing it is like reducing pixel detail, and that can be not convenient.(in this case, quite detail needed, but not for print, just reducing to 150 or 200dpi every file might work to keep all objects at same size between files)
You mention that the "object size in the picture must remain the same". If you were to publish all this only in screen based media, not print, and you reduced all images only in dpi, that is, going from 300dpi, to 72dpi, all objects will be in same proportion(and screens are 72 or 96dpi. Using 300dpi is ok, though). To be able to do this, you can use Photoshop (best) , or even the free irfanview converter(its batch mode would become incredibly handy), download from irfanview.com.
PNG does not preserve DPI info, tho won't lose pixel data and you will be able to restore it with Photoshop. If you need it maintaining the DPIs because target user is not a designer or graphic artist(does not know how to create a 300dpi document from a file with just pixels info), then you'd better use TIFF format, good for print, supporting transparency and DPIs. But you will need to compress it quite with 7zip, winrar, Winzip or the like. (if you need to send it by mail, etc)
To check you are not losing info, just be sure pixel dimensions keep the same.(and no jpg saving is done)
Replying to your updated answer :
- rotate the image
usually a flip (vertical or horizontal) or 90º rotation command, wont add detail loss. Rotating manually with other tools, can add loss, like most operations.
- make the white surroundings transparent (know how to do that)
- make the file size less than 4MB. Preserving the quality as much as
I am a bit surprised about the need of working like this for t-shirts printing.
Firstly, the usual both ways of delivering the design to them tends to be a) a vectorial file, be it EPS, freehand, (even SVG in some cases) etc. In one color or 2, 4, etc... b) A raster RGB file, or CMYK, in both cases, usually a JPG. Not neededly using 300dpi, indeed, in cloth, it's often 200dpi, or 150dpi, depending on the material. In a traditional print company, you would never see a flower that you physically want to be, ie, 20cm, to be printed smaller, provided that you knew the resolution (dpi) at which they print, and even choosing another output if possible. I suspect there is a format, manner or way to tell your t-shirt company to receive the files at lower DPI, but same size in inches or CMS. Probably in another "mode" or the like. If you provide us (if are allowed) the name of the company, I could tell you some direction on how to do this, as they'll refer that in their doc.
Other thing that sounds strange to me is the whole transparency thing, which forces you to use PNG. If you are going to print on white cloth, then just use pure white, most print machines will just disregard the white as background, no ink. So JPG would be possible, and certainly way smaller size in MB.
There's another way, that is providing them the design in eps vectorial format. (not "raster" eps). That'd be really small in Ks. Obviously your friend just draw traditionally, and you would be forced to trace manually or automatically her design. Which is technically quite complex to do it well not being a designer. (and could happen your friend wouldn't like the output)
Talk to the guys, mail or their forums, and first of all , check their doc, it absolutely have to be possible to just use JPG (often in CMYK mode) using a solid color background(white, or a cyan if cloth is cyan, etc), and surely at smaller dpi (that is: if you send a 200 dpi file, and their printing "mode" or flavor is 200dpi, the object shows in the t-shirt same size than if you send them same design at 300dpi, and their machine prints at 300dpi, provided you gave them all times files haivng same cm (or inches) dimensions, althought at diferent resolutions(dpi). I'd be surprised to know they print only (and in cloth) at 300dpi...)
Ok, seing the time I dedicated to this question, now I am curious. If you can, just post the url of the company, might be much shorter path ;)
Update: Info to work with that site.
Firstly, seems, as I was suspecting, that you don't need all this stuff of the transparency and PNG. And so, can use just JPG. IMHO you just need to be sure you delete and make white all the dirt,etc, from the scanning. Often, a fast way to do it, is in Photoshop , "Color Selective", then adjust "whites", and remove all "black" in that "whites" slider. As you are using gimp, a trick can be lowering to the left the white tiny slider in the "Levels" (colors top menu) dialog, and just touching that. Not much, though. Will lose some detail, but not much. Tho is preferable to delete the white dirt with other methods, that protect more the drawing.
So, they actually have a procedure, you just make sure you leave that white background quite clean,(fully white) and just send them it as JPG, (don't work on transparency neither do a PNG), at 300dpi, same size in cm or inches (same pixels numbers) you were working initially, and inform as they say, that you want it "transparent" in the way they mention in the bellow FAQ URL:
OK, IMHO, all you have to do is save as JPG, at 300dpi which is the res you had been sending to them. Compressing as JPG, should be able to give you the good size/quality ratio. Reading more:
"We print all artworks in CMYK full colour"
But you work with Gimp, and at least in the Windows version I think there's not yet CMYK mode. But surely the guys do a good job on printing it somehow. As is what average user will send them, close to no user knows what cmyk is.
"We print all images at 300 DPI " there you have it. Use that.
"We accept: JPG, GIF, PNG, PDF, EPS, TIFF, Adobe Illustrator, Adobe Photoshop formats"
"To get a good full sized quality print, its best to use your image artwork at an A4 size canvas"
"Please also check that your image is in an RGB mode. Sometime's an artwork that's in CMYK may not display correctly in your browser. Check the file size is below 20 MB"
See? They actually have it ironed to deal with RGB images. So, no much worries...
BTW, being your image 14 megs, it should have worked... But from now, works as told you, JPG, solid white background, no work on transparency (indeed, will be a JPG)
That's all. Give it a try doing as I explained you, might make it all much easier and faster ;)