For some reason there's a widespread misconception that the GIF image format compresses images more than the PNG format.
One probable reason for this is that people make comparisons in the wrong way. Typically these people will open eg. a JPEG file in an image editor and then save it without any conversion to a PNG and a GIF and compare the file sizes directly and make the deduction that GIF compresses better.
Of course they are comparing apples to oranges here. The PNG is storing losslessly all the information in the input JPEG (that is, 24 bits per pixel) while the GIF is only storing 256 colors from the original JPEG (that is, 8 bits per pixel). In other words, the GIF is lossy (with respect to the original JPEG). No wonder the PNG file is larger, as it's storing three times as much information as the GIF.
A correct comparison would be, of course, to convert the image to 8-bit format first and then save it in PNG and GIF formats (or, alternatively, save it in GIF format, then open that GIF and save it to a PNG). This way both the GIF and the PNG contain the exact same pixel data. When the correct comparison is done, PNG beats GIF hands down in compression.
Here's a table of comparisons (click on the images to see the originals). The TGA versions are in raw format, ie. no compression at all. The size of the TGA file is always the amount of pixels (ie. width times height) plus 768 bytes for the palette plus 18 bytes for the TGA header (so for example a 800x600 image always takes exactly 480 786 bytes). This is used as a comparison.
|Image||Format||Size (bytes)||% of TGA|
|TGA||1 883 879|
PNG beats GIF in all the testcases. Some images, such as the second one (the blue fractal image) are in fact so pathological that the GIF file is actually larger than the raw TGA file.
For some reason it seems that GIF compresses grayscale images very poorly compared to PNG. While PNG has directly a grayscale mode (ie. it doesn't use a palette) while a GIF always uses a palette, the palette data in the GIF file only takes 768 bytes so that doesn't explain the poor result.
Another prominent example is the simple vertical gradient image which compresses as PNG to almost one tenth of the size of the GIF.