Estoy tratando de tomar iconos de página y agregarlos a una imagen dinámica que estoy creando. Ver StackFlair. El código del sitio web funciona bien localmente, y en un servidor de alojamiento compartido. blah blah, plan de alojamiento gratuito, obtienes lo que pagas, blah blah Mi problema es que recibo una excepción de una nueva configuración de alojamiento. Esta excepción solo se aplica a los archivos .ico. Puedo procesar imágenes .gif y .png sin problemas en todos los servidores que he probado (es decir, una imagen gravatar). Los favicons que trato de usar son favicons de la red SE, pero incluso http://www.google.com/favicon.ico da como resultado la siguiente excepción.Problema al convertir .ico en matriz de bytes al objeto Imagen en .net
System.ArgumentException: El parámetro no es válido.
- System.Drawing.Image.FromStream (corriente Stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
- System.Drawing.Image.FromStream (Secuencia SECUENCIA)
Las variaciones de código que Estoy intentando están abajo. Obtengo la misma excepción de Parámetro no válido para todas las variaciones.
byte[] imageBytes = //pull from Image field in SQL Server
//or
byte[] imageBytes = new WebClient().DownloadData(imageUrl);
MemoryStream ms = new MemoryStream(imageBytes);
Image image = Image.FromStream(ms);
//or
Icon icon = new Icon(ms);
Image image = icon.ToBitmap();
//or
Image image = new Bitmap(ms);
Todos estos funcionan bien a nivel local y en el servidor de hosting mal. Ninguno de ellos funciona en el servidor en el que quiero estar. Al usar la salida de Trace, puedo verificar que la longitud de la matriz contiene la cantidad correcta de bytes. Si hago lo siguiente, veo que la imagen se muestra como se esperaba.
Response.Clear();
Response.BinaryWrite(imageBytes);
Response.End();
Si yo recorrer la matriz y escribir cada valor de byte, la salida es idéntica a mi instancia local al servidor donde consigo la excepción.
Si ayuda, el servidor donde mi código no funciona es un servidor de Windows 2003 con sp2.
Claramente, el marco me está diciendo que la secuencia de bytes no es válida, pero todo lo que he comprobado, marca. ¿Alguna idea de por qué este servidor específico se está ahogando en los archivos .ico?
Sé que es una solución alternativa en lugar de una solución, pero si los archivos .ico que está sirviendo son favicons, podría servirlos en formato PNG y aún así funcionará (incluso en IE6, IIRC). – Piskvor
@Piskvor, necesito ingresarlos en un objeto Imagen porque los estoy agregando a una imagen que estoy creando. Ver [StackFlair] (http://stackapps.com/questions/1567/stackflair-generate-flair-for-your-stackexchange-associated-accounts-now-with). –
@rchern: ah, no importa entonces. – Piskvor