Jump to content
Sign in to follow this  
RJ90

PngBitmapEncoder para Byte

Recommended Posts

RJ90

Boas!

Tenho uma aplicação que tira uma foto e a encoda para png. (não criar o ficheiro .png, fica guardada numa variavel). Em seguida quero guardar-a na base de dados, em o tipo será image (ou seja, binary, byte), mas não estou a conseguir guardar.

Tenho o seguinte:

public void SaveImage(BitmapSource bitmapSource)
{
PngBitmapEncoder pngBitmapEncoder = new PngBitmapEncoder();

        pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapSource));
        pngBitmapEncoder.Interlace = PngInterlaceOption.Off;

        thePhoto = pngBitmapEncoder;
}

victim.Photo = photo.thePhoto;

Se fizer:

victim.Photo = (Byte)photo.thePhoto;

Não funciona e também, não estou a ver como fazer, agradecia uma ajuda.

Obrigado!  :)


Samsung 700Z5A-S01PT Samsung Ominia W

ᥡ What Else? ᥡ

Share this post


Link to post
Share on other sites
RJ90

Quase resolvido!  :P

public byte[] bytes;

public void SaveImage(BitmapSource bitmapSource)
{
var memoryStream = new MemoryStream();
        PngBitmapEncoder pngBitmapEncoder = new PngBitmapEncoder();
        pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapSource));
        pngBitmapEncoder.Interlace = PngInterlaceOption.Off;            
        pngBitmapEncoder.Save(memoryStream);
        bytes = memoryStream.ToArray();         
}


Agora tenho de mostra a imagem que está na base de dados, mas não consigo.

BitmapImage thePhoto = new BitmapImage();

using (MemoryStream ms = new MemoryStream(victim.Photo, 0, victim.Photo.Length))
{
ms.Write(victim.Photo, 0, victim.Photo.Length);
        ms.Position = 0;
        thePhoto.BeginInit();
        thePhoto.StreamSource = ms;
        thePhoto.EndInit();        
}
imgPhoto.Source = thePhoto;
imgPhoto.UpdateLayout();


Não aparece nada na 'Image'.

Ajuda sff.

Boas!

Tenho uma aplicação que tira uma foto e a encoda para png. (não criar o ficheiro .png, fica guardada numa variavel). Em seguida quero guardar-a na base de dados, em o tipo será image (ou seja, binary, byte), mas não estou a conseguir guardar.

Tenho o seguinte:

public void SaveImage(BitmapSource bitmapSource)
{
PngBitmapEncoder pngBitmapEncoder = new PngBitmapEncoder();

        pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapSource));
        pngBitmapEncoder.Interlace = PngInterlaceOption.Off;

        thePhoto = pngBitmapEncoder;
}

victim.Photo = photo.thePhoto;

Se fizer:

victim.Photo = (Byte)photo.thePhoto;

Não funciona e também, não estou a ver como fazer, agradecia uma ajuda.

Obrigado!  :P


Resolvido!

BitmapImage thePhoto = new BitmapImage();
            var ms = new MemoryStream();
            
            ms.Write(victim.Photo, 0, victim.Photo.Length);
            ms.Position = 0;
            thePhoto.BeginInit();
            thePhoto.StreamSource = ms;
            thePhoto.EndInit();
            imgPhoto.Source = thePhoto;
            imgPhoto.UpdateLayout();


Samsung 700Z5A-S01PT Samsung Ominia W

ᥡ What Else? ᥡ

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.