Pergunta

Então, eu estou convertendo um Metafile (EMF para ser exato) a um jpeg ou gif (não importa, desde que seja compatível com os navegadores) e quando eu fizer a conversão, todos os pixels transparentes ficar preta. Eu não tenho nenhuma idéia de como fazer isso em GDI +, mas aqui é o método que estou usando para salvar o arquivo:

Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)
Foi útil?

Solução

confira o site do Bob Powel. ele tem um-porcaria-tonelada métrica de GDI + coisas. este é especificamente para o trans GIF

Outras dicas

Pelo que entendi o metarquivo não contém informações para o fundo - é simplesmente transparente.

Um trabalho simples de contornar é a cor simplesmente a fundo a cor que você quiser.

por exemplo. O código a seguir cria um bitmap do mesmo tamanho que a imagem original, desenha o fundo branco e, em seguida, desenha a imagem de metarquivo no topo do fundo.

        Rectangle imageRect = new Rectangle(0, 0, originalImage.Width, originalImage.Height);
        Bitmap newImage = new Bitmap(originalImage.Width, originalImage.Height);
        Graphics g = Graphics.FromImage(newImage );
        g.FillRectangle(new SolidBrush(Color.White), imageRect);
        g.DrawImage(originalImage, new Point(0, 0));

O meu entendimento é que você precisa para fornecer informações para o enquadramento, em relação ao formato de imagem das imagens de destino e origem, a fim de alfa canais a ser traduzido corretamente.

Informações Especificamente cor: bits por pixel e se há ou não é alfa por pixel ou uma cor transparente ou um valor alfa único para toda a imagem - coisas assim.

No entanto, eu não estou certo de como isso é feito em VB (ou em .NET em tudo para que o assunto) - eu uso C ++ nativo para estes tipos de operações ...

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