The size of sprite is way too bigger than the original png. so any way to reduce it???

orignal png is 670K, but after apllying sprite, it becomes 4M.
so what happened???

It got uncompressed and recompressed. GPU’s don’t do PNG due to their parallel nature. Only compression standards with a fixed number of bytes per block of pixels are supported, so every block in the texture can be decompressed independent of the rest of the texture.

It’s really not that difficult to turn a 1K PNG into a 64M file for the GPU, so your example is really not that bad.

So you’re bringing a png into your project and changing your texture size to “Sprite” and it’s growing in size?

Unity can compress sprites if their height/width is a multiple of 4. To test this I created 2 white sprites, one is 99x99 pixels in size and the other is 100x100 pixels in size. The smaller 99 pixel sprite takes 28.7 KB in Unity, the bigger sprite is only 4.9KB due to compression.

Ah, I might have misread. So the PNG is not 670K, but the texture as compressed in Unity is 670K. Since the factor of difference is about 6, I would indeed say that compression turned off completely in this case.

Textures are set to rescale to power of two dimensions by default, but sprites are not.