Pergunta

Olá eu estou tentando salvar uma imagem de bitmap em um programa básico de edição de imagem.

Aqui está o código:

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

[EDIT] E eu estou abrindo a imagem com este

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);

Então, quando eu tento isso eu receber uma Generic GDI+ error. Então, eu encontrei um solução para isso e parece que isso:

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

Mas quando eu tento fazer isso eu recebo outro erro dizendo que o arquivo que estou apagando é aberto no momento. Isto é porque que é o arquivo que estou tentando editar.

Como faço para "fechar" o arquivo sem realmente fechar o aplicativo? Ou há uma solução alternativa?

Obrigado!

Foi útil?

Solução

É difícil dizer sem ver algum contexto em torno de como o carregamento do arquivo, mas aqui estão algumas sugestões:

  1. Antes de salvar, copiar a imagem existente em uma nova imagem, perto do original, executar a excluir e salvar a cópia.
  2. Salve o arquivo para um nome de arquivo aleatório, exclua o original, renomeie o arquivo de nome aleatório para o nome original.
  3. Coloque o arquivo em um fluxo de memória e usar o em cópia de memória para inicializar a imagem.

Eu pessoalmente ir com a opção # 3 para a maioria dos casos. Certifique-se de eliminar a imagem quando você terminar de usá-lo -., É melhor se você pode envolvê-lo em um bloco usando ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top