Error general en GDI+ [Solucionado]
Cuando intenta modificar un objeto de mapa de bits, guardar o cargar una imagen en un servidor web, puede recibir un mensaje de error Ha ocurrido un error genérico en GDI+ . El error puede ocurrir independientemente de la aplicación que se utilice. Esta publicación proporciona las soluciones más aplicables que los usuarios afectados pueden aplicar para resolver el problema.
¿Qué es GDI+?
Windows GDI+ proporciona gráficos vectoriales, imágenes y tipografía en 2D al actuar como una capa intermedia entre las aplicaciones y los controladores de dispositivos para representar gráficos, imágenes y texto en 2D. GDI+ mejora la Interfaz de dispositivo de gráficos de Windows (GDI) (interfaz de dispositivo de gráficos incluida en versiones anteriores de Windows) al agregar nuevas funciones y optimizar las existentes. En otras palabras, GDI+ es el subsistema de gráficos de Windows, que consiste en una interfaz de programación de aplicaciones (API) para mostrar gráficos y texto enriquecido tanto en una pantalla de video como en una impresora.
Error general en GDI+
El error general que arroja el error GDI+ es muy general porque la excepción no proporciona ningún detalle. Sin embargo, si enfrenta este problema, las sugerencias a continuación deberían ayudarlo a resolver el problema según su escenario o la tarea que haya completado.
1] Reinicie el entorno de destino y luego repita la acción que estaba siguiendo. Esto ha funcionado para los usuarios afectados que implementan o mueven aplicaciones de la adopción a la producción.
2] Este error puede ocurrir debido a la configuración de un «bloqueo» al intentar guardar y sobrescribir un mapa de bits modificado, porque cuando inicializa un objeto de mapa de bits de una imagen almacenada en el disco duro, crea un bloqueo en el archivo de imagen subyacente. En otras palabras, cuando se crea un objeto de mapa de bits o un objeto de imagen a partir de un archivo, el archivo permanece bloqueado durante la duración del objeto. Como resultado, no puede cambiar la imagen y volver a guardarla en el mismo archivo en el que se creó. En este caso, realice una de las siguientes acciones para resolver el problema:
- En lugar de sobrescribir el archivo, guarde el nuevo archivo con un nombre diferente al del archivo original.
- Si necesita sobrescribir un archivo existente, cree un mapa de bits separado del mapa de bits existente y luego deseche el mapa de bits anterior, lo que desbloqueará el archivo de imagen. Ahora puede realizar los cambios necesarios en el nuevo mapa de bits y guardar el nuevo mapa de bits con el nombre de archivo de la imagen original.
- Guardar en un flujo de memoria «intermedio». El código
Memory /FileStream
vsbitmap.Save(...)
, aunque contradictorio, debería funcionar con ligeras variaciones para tener en cuenta la llamada a cualquier método en particular.
Tenga en cuenta que el bloqueo subyacente del archivo solo se libera cuando se elimina el objeto de mapa de bits; una vez que se libera el bloqueo, puede sobrescribirlo.
3] Debe deshacerse de sus imágenes, porque si confía en que el recolector de basura las encuentre a tiempo y libere recursos GDI no administrados, probablemente obtendrá una excepción. Además, al escribir código, preste atención a los siguientes puntos:
ConvertTo
Parece un desperdicio, solo úsalo si lo necesitas.- Si necesita concatenar rutas, use
Path.Combine
. - Utilice la interpolación de cadenas en lugar de sumar cadenas.
- Si necesita escapar de un carácter, como una barra invertida, use Verbatim String Literal @”…”.
- Favorezca siempre
using
a un operador que nunca se olvide de deshacerse de un objeto, incluso si el código arroja una excepción.
4] No hay permiso para escribir en la carpeta al guardar el archivo, especialmente si obtiene un error en el sitio web porque el sitio web se ejecuta con permisos limitados. En una aplicación web, el grupo de aplicaciones o la cuenta que ejecuta el sitio web debe tener acceso de escritura a la carpeta en la que guardar el archivo, así que asegúrese de que se pueda escribir en la carpeta donde intenta guardar el archivo. Por ejemplo, si está utilizando el sitio web con una cuenta DefaultAppPool
, debe otorgar al IIS AppPool\DefaultAppPool
usuario permisos de escritura en la carpeta.
5] Si usa Azure y obtiene un error genérico en GDI+ cuando abre un mapa de bits solo en un servidor web remoto y no en su máquina de prueba local, GDI+ podría estar presente en los servidores IIS de Azure. no puede manejar nuevos formatos BMP creados por GIMP. Si es así, realice una de las siguientes acciones para resolver el problema:
- Vuelva a guardar el BMP con Paint.
- Utilice un PNG sin comprimir en su lugar.
- Guardar como BMP de 24 bits con GIMP. Este método dará mala calidad.
6] Este mensaje de error se muestra si la ruta a la que está navegando Bitmap.Save()
no es válida (la carpeta no existe, etc.). En pocas palabras, está escribiendo la ruta incorrecta para guardar la imagen. En este caso, asegúrese de corregir la ruta de guardado y asegúrese de que su ruta también incluya el nombre del archivo.
7] Si el archivo de mapa de bits ya existía en la unidad del sistema y su aplicación dio un error, siga estos pasos:
- Asegúrese de que exista la carpeta de destino.
- Asegúrese de que la carpeta de destino no tenga un archivo con ese nombre.
- Verifique el permiso de su carpeta donde se guarda la imagen en su disco local. Para hacer esto, haga clic con el botón derecho en la carpeta, luego seleccione Propiedades > Seguridad > Editar > Agregar ; seleccione Todos y marque la casilla Permitir control total .
¿Cómo resolver el error general en GDI+ en C#?
Si aparece un error general en GDI+ en C#, podría deberse a que el archivo de mapa de bits que intenta guardar ya existe en la unidad del sistema. En este caso, puede asegurarse de que la carpeta de destino exista y de que no tenga un archivo con el mismo nombre.
¿Qué es un error GDI+?
GDI+ arroja un error cuando no puede guardar archivos, generalmente por las dos razones más comunes. Una de las razones es que cuando inicializa un objeto de mapa de bits a partir de una imagen almacenada en el disco duro, crea un bloqueo en el archivo de imagen subyacente. Debido al bloqueo, cuando intenta guardar y sobrescribir un mapa de bits modificado, aparece este error.
¿Cómo arreglar las ventanas GDI?
Para corregir el error de GDI+ de Windows en su dispositivo, verifique si las siguientes sugerencias funcionan:
- Ejecute un escaneo SFC en un símbolo del sistema elevado.
- Ejecute el solucionador de problemas de energía.
- Actualice el controlador de su tarjeta de video.
- Compruebe la actualización de Windows.
- Inicie su computadora en modo de inicio limpio.
¿Qué es GDI en mi computadora portátil?
GDI permite a los desarrolladores de aplicaciones mostrar información en una pantalla o impresora sin preocuparse por los detalles del dispositivo de visualización específico. El desarrollador de aplicaciones llama a los métodos proporcionados por las clases GDI+ y estos métodos, a su vez, hacen las llamadas apropiadas a controladores de dispositivos específicos. GDI+ aísla la aplicación del hardware de gráficos y es este aislamiento el que permite a los desarrolladores crear aplicaciones independientes del dispositivo.
¿Windows sigue usando GDI?
Con la llegada de Windows XP, GDI ha quedado obsoleto en favor de su sucesor, el subsistema GDI+ basado en C++. Aunque GDI+ se incluye con Windows XP y versiones posteriores, la DLL de GDI+ también puede enviarse con una aplicación y utilizarse en versiones anteriores de Windows.
Fuente: El club de las ventanas
Deja una respuesta