2015-02-10 3 views
1

Я ищу быстрый способ Picturebox на изображении Преобразовать в байтовый массив.C# Как преобразовать pictureBox.Image в байт-массив?

Я видел этот код, но мне он не нужен. потому что поле изображения изображений - это данные, считанные из db. Так что я не знаю ImageFormat

public byte[] imageToByteArray(System.Drawing.Image imageIn) 
{ 
    MemoryStream ms = new MemoryStream(); 
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); 
    return ms.ToArray(); 
} 

Так Пожалуйста, дайте мне знать, если кто-нибудь знает быстрый способ

Спасибо! хорошо тебе провести время!

+0

Вы должны «знать» ImageFormat. Это формат, в котором он будет сохранен, и вам решать. Это не зависит от исходного формата. – Marek

+0

@Marek, он потенциально должен иметь исходный формат с свойством 'imageIn.PixelFormat'. – DarkUrse

ответ

1

Это может не быть именно то, что вы ищете, но это может быть полезным для вас, если вы ищете производительность при выполнении некоторых операций с пикселями. И я подумал, что стоит упомянуть об этом здесь.

Так как вы уже загрузили файл с Image imageIn вы можете получить прямой доступ к буферу изображения, не делая какие-либо копии, следовательно, экономии времени и ресурсы:

public void DoStuffWithImage(System.Drawing.Image imageIn) 
{ 
    // Lock the bitmap's bits. 
    Rectangle rect = new Rectangle(0, 0, imageIn.Width, imageIn.Height); 
    System.Drawing.Imaging.BitmapData bmpData = 
        imageIn.LockBits(rect, System.Drawing.Imaging.ImageLockMode.Read, 
        imageIn.PixelFormat); 

    // Access your data from here this scan0, 
    // and do any pixel operation with this imagePtr. 
    IntPtr imagePtr = bmpData.Scan0; 

    // When you're done with it, unlock the bits. 
    imageIn.UnlockBits(bmpData); 
} 

Для получения дополнительной некоторой информации, смотрите на этой странице MSDN

ps: Этот bmpData.Scan0, конечно, даст вам только доступ к полезной нагрузке на пиксель. ака, нет заголовков!

+0

отсутствует параметр 'Dim picture As Byte() = GetBytes (ListView2.Items (index) .SubItems (8) .Text) Dim преобразователь As New ImageConverter() PictureBox1.Image = DirectCast (converter.ConvertFrom (картинка) , Image) ' –

2

Постарайтесь прочитать это: http://www.vcskicks.com/image-to-byte.php Надеюсь, это поможет вам.

Редактировать: Я предполагаю, что у вас есть код, отредактированный по ссылке, связанной Fung. Если да, то есть ответ на Ваш вопрос прямо там вам просто нужно прокрутить вниз ...

второй Edit (фрагмент кода страницы - спасибо за инфо Fedor):

public static byte[] ImageToByte(Image img) 
{ 
    ImageConverter converter = new ImageConverter(); 
    return (byte[])converter.ConvertTo(img, typeof(byte[])); 
} 
Смежные вопросы