Pasa que tanto en png8 como en gif, tenés un límite de 256 colores. Si tu degradado usa, digamos, 350 "gamas" de un mismo color para lograr el efecto, es natural que al guardarlo en esos formatos pierdas información de color. Para estos casos es mejor un jpg o un png24.
Sobre la transparencia....
Cita: 1. En PNG-24 no me da la transparencia de fondo, solo en PNG-8.
El PNG24 si tiene transparencia. Es más, es mejor que la transparencia del 8 y del gif porque es una transparencia alpha (no recuerdo el nombre de la transparencia del gif y png8)
Pasa que seguramente lo estás mirando con internet explorer. Este navegador no reconoce nativamente la transparencia del png24. Hay que colocar un código javascript para ello:
Código:
<script type="text/javascript">
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\');\"></span>"
img.outerHTML = strNewHTML
i = i-1
}
}
}
window.attachEvent("onload", correctPNG);
</script>
Probá ver tu página con otro navegador (firefox, por ejemplo) y vas a ver que si hay transparencia (sin siquiera implementar el javascript)