Pregunta

Hola, estoy tratando de guardar una imagen de mapa de bits en un programa básico de edición de imágenes.

Aquí está el código:

         // then save it
        ImageBoxInApp.Image.Save(filename);

[EDIT] Y estoy abriendo la imagen con esto

openFileDialog1.Title = "Select an Image";
        openFileDialog1.Filter = "All Files|*.*|Windows Bitmaps|*.bmp|JPEG Files|*.jpg";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            filename = openFileDialog1.FileName;
            Image img = System.Drawing.Image.FromFile(filename);

Entonces, cuando intento esto, recibo un Error genérico de GDI + . Así que encontré una solución para esto y se ve así:

        // Delete existing file first
        System.IO.File.Delete(filename);
        // then save it
        ImageBoxInApp.Image.Save(filename);

Pero cuando trato de hacer esto, recibo otro error que dice que el archivo que estoy borrando está actualmente abierto. Esto se debe a que ese es el archivo que estoy tratando de editar.

¿Cómo puedo " cerrar " el archivo sin cerrar realmente la aplicación? ¿O hay una solución alternativa?

¡Gracias!

¿Fue útil?

Solución

Es difícil de decir sin ver un contexto sobre cómo está cargando el archivo, pero aquí hay un par de sugerencias:

  1. Antes de guardar, copie la imagen existente en una nueva imagen, cierre el original, realice la eliminación y guarde la copia.
  2. Guarde el archivo en un nombre de archivo aleatorio, elimine el original, cambie el nombre del archivo al azar por el nombre original.
  3. Cargue el archivo en una secuencia de memoria y use la copia en memoria para inicializar la imagen.

Yo personalmente iría con la opción # 3 para la mayoría de los casos. Asegúrese de deshacerse de la imagen cuando haya terminado de usarla; es mejor si puede envolverla en un bloque using ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top