Cuando intenta modificar un objeto de mapa de bits, guardar o cargar una imagen en un servidor web, puede recibir el mensaje de errorOcurrió un error genérico en GDI+. El error puede ocurrir independientemente de la aplicación en uso. 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 bidimensionales, imágenes y tipografía, actuando como una capa intermedia entre las aplicaciones y los controladores de dispositivos para representar gráficos, imágenes y texto bidimensionales. GDI+ mejora enInterfaz de dispositivo de gráficos de Windows (GDI)(la interfaz del dispositivo gráfico incluida con versiones anteriores de Windows) agregando nuevas funciones y optimizando las existentes. En otras palabras, GDI+ es un subsistema gráfico de Windows que consta de una interfaz de programación de aplicaciones (API) para mostrar gráficos y texto formateado tanto en la pantalla de video como en la impresora.
Ocurrió un error genérico en GDI+
El error Se produjo un error genérico en el GDI+ es muy genérico ya que la excepción no proporciona ningún detalle. Sin embargo, si se enfrenta a este problema, las sugerencias proporcionadas a continuación deberían ayudarlo a resolver el problema según el escenario de su caso o la tarea que realizó.
1]Reinicie el entorno de destino y luego repita la acción que estaba realizando. Esto funcionó para los usuarios afectados que implementaban o movían aplicaciones de aceptación a producción.
2]Este error puede ocurrir debido a que se establece un ‘bloqueo’ cuando intenta guardar y sobrescribir su mapa de bits modificado porque cuando inicializa un objeto de mapa de bits desde una imagen almacenada en un disco duro, crea un bloqueo en el archivo de imagen subyacente. En otras palabras, cuando se construye un objeto de mapa de bits o un objeto de imagen a partir de un archivo, el archivo permanece bloqueado durante la vida útil del objeto. Como resultado, no puede cambiar una imagen y volver a guardarla en el mismo archivo donde se originó. En este caso, para resolver el problema, realice una de las siguientes acciones:
- En lugar de sobrescribir el archivo, guarde un nuevo archivo con un nombre diferente al del archivo original.
- Si debe sobrescribir el archivo existente, cree un objeto de mapa de bits separado del objeto de mapa de bits existente, luego deseche el objeto de mapa de bits anterior que liberará el bloqueo en el archivo de imagen. Ahora, puede realizar los cambios necesarios en el nuevo objeto de mapa de bits y guardar el nuevo objeto de mapa de bits con el nombre de archivo de imagen original.
- Guardar en un flujo de memoria ‘intermediario’. los
Memory /FileStream
contrabitmap.Save(...)
El código, aunque contrario a la intuición, debería funcionar con variaciones menores para tener en cuenta cualquier llamada de método en particular.
Tenga en cuenta que solo cuando se elimina el objeto de mapa de bits, se elimina el bloqueo subyacente en el archivo; una vez que se elimina el bloqueo, puede sobrescribirlo.
Archivo: Desbloquee o elimine archivos bloqueados o protegidos en Windows usando ThisIsMyFile
3]Debe deshacerse de sus imágenes porque si confía en el recolector de elementos no utilizados para encontrarlas a tiempo y liberar los recursos de GDI no administrados, es probable que obtenga una excepción. Además, tome nota de los siguientes puntos al escribir su código:
ConvertTo
Parece un desperdicio, solo lanza si es necesario.- Si necesita combinar 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 @”…”.
- Favorece siempre el uso de
using
declaración que nunca se olvida de deshacerse de un objeto, incluso si el código arroja una excepción.
Archivo: Los mejores principios y pautas de programación que todos los programadores deben seguir
4]No hay permiso de escritura en la carpeta cuando está guardando un archivo, especialmente si recibe el error en el sitio web porque el sitio web se ejecuta con permisos restringidos. En la aplicación web, el grupo de aplicaciones o la cuenta que ejecuta el sitio web debe tener acceso de escritura a la carpeta para guardar el archivo, así que asegúrese de que se pueda escribir en la carpeta en la que intenta guardar el archivo. Para examplesi está ejecutando un sitio web bajoDefaultAppPool
debes asignarIIS AppPoolDefaultAppPool
usuario acceso de escritura a la carpeta.
Archivo: Sitio web que solicita permiso para almacenar datos en la computadora para uso sin conexión
5]Si está ejecutando Azure y obtiene el error Ocurrió un error genérico en GDI+ al abrir un mapa de bits solo en un servidor web remoto, y no en su máquina de prueba local, podría ser que el GDI+ presente en los servidores IIS de Azure no pueda. t manejar nuevos formatos BMP generados por GIMP. Si este es su caso, para resolver el problema, realice cualquiera de las siguientes acciones:
- Vuelva a guardar BMP con Paint.
- Utilice un PNG sin comprimir en su lugar.
- Guardar como BMP de 24 bits con GIMP. Este método producirá mala calidad.
Archivo: Paint 3D no se guarda; No muestra la opción Exportar
6]Este mensaje de error se muestra si la ruta que pasa aBitmap.Save()
no es válido (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 de que su ruta también incluya el nombre del archivo.
7]En el caso de que el archivo de imagen de mapa de bits ya existiera en la unidad del sistema y su aplicación arrojara el error, haga lo siguiente:
- Verifique que la carpeta de destino exista.
- Verifique que no haya un archivo con el mismo nombre en la carpeta de destino.
- Verifique el permiso de su carpeta donde se guarda la imagen en su disco local. Para hacer esto, haga clic derecho en la carpeta, luego navegue hastaPropiedades>Seguridad>Para editar>Agregar– seleccione Todos y marquePermitir control total.
Archivo: Cómo tomar posesión total de archivos y carpetas en Windows
¡Espero que encuentres útil esta publicación!
¿Cómo resolver Ocurrió un error genérico en GDI+ en C#?
Si obtiene Se produjo un error genérico en GDI+ en C#, podría deberse a que el archivo de imagen de mapa de bits que intenta guardar ya existe en la unidad del sistema. En este caso, puede verificar que la carpeta de destino existe y que no existe un archivo con el mismo nombre en la carpeta de destino.
Archivo: Se produjo un error de JavaScript en el mensaje del proceso principal en Windows
¿Qué es un error GDI+?
GDI+ arroja un error cuando no puede guardar archivos, generalmente debido a las dos razones más comunes. Una de las razones es que cuando inicializa un objeto de mapa de bits de una imagen almacenada en un disco duro, crea un bloqueo en el archivo de imagen subyacente. Debido al bloqueo cuando intenta guardar y sobrescribir su mapa de bits modificado, arroja este error.
¿Cómo arreglo las ventanas GDI?
Para corregir el error de GDI+ de Windows en su dispositivo, vea si las siguientes sugerencias funcionan:
- Ejecute el escaneo SFC en el símbolo del sistema elevado.
- Ejecute el Solucionador de problemas de energía.
- Actualice el controlador de la tarjeta gráfica.
- Compruebe si hay actualizaciones de Windows.
- Inicie la computadora en un arranque limpio.
Archivo: Solucione el error gdi32full.dll no encontrado o faltante en Windows
¿Qué es GDI en mi computadora portátil?
GDI permite a los programadores de aplicaciones mostrar información en una pantalla o impresora sin tener que preocuparse por los detalles de un dispositivo de visualización en particular. El programador de aplicaciones realiza llamadas a los métodos proporcionados por las clases GDI+ y esos métodos, a su vez, realizan las llamadas adecuadas a los 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 todavía usa GDI?
Con la introducción de Windows XP, GDI quedó en desuso en favor de su sucesor, el subsistema GDI+ basado en C++. Si bien GDI+ se incluye con Windows XP y versiones posteriores, la biblioteca dinámica GDI+ también se puede enviar con una aplicación y usarse en versiones anteriores de Windows.
Archivo: Explicación de los archivos Ntdll.dll, Advapi32.dll, Gdi32.dll.