Texture compression is broken?

I have a jpg file that is 500kb and no matter which compression I pick in unity, the file size will always be bigger than 500kb and yet the image itself will look worse in most cases. What’s up with this?

Also which compression method is losless? I need perfect quality image.

Thanks

See Ashkan’s answer, but also try either setting max size larger, or set it to a GUI texture which will use the original size

None of the compression formats are lossless. If you need perfect image quality, the only choices are RGB24 if you have no alpha, or ARGB32 if you do have alpha. Don’t use lossy formats like JPG for the source either, use lossless like PSD, TGA, etc.

See Eric’s and my answers here: Texture file size in Unity - Questions & Answers - Unity Discussions

all compressions in unity are losless i think.
the image size does not depend on the source format. when you import it into unity it’s a set of pixels which unity stores in it’s internal formats. each format stores properties of textures in a specific number of bits. you can adjust the resolution for making it smaller.
jpeg is an advanced compression method and is lossy. it uses different algorithms. when you import a 32X32 image it’s 32*32 pixels which will be stored in unity either as rgb or argb values.
if not compressed each component (e.g R) takes 8 bits.
there is much info about it in texture import settings in unity’s manual.