Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Поместить картинку в файл? Help Добавлено: 13.12.05 16:29  

Автор вопроса:  На†уралист™ | Web-сайт: pesap.com
Всем доброее время суток.
Прошу ещё раз оказать посильную помосЧъ…
Есть вот такой кусочек кода (взято из примера «Shared memory»):

    Public Sub Put(ByVal Data As String)
        Dim myBuffer As Byte() = System.Text.Encoding.UTF8.GetBytes(Data)
        Marshal.WriteInt32(SharePoint, Data.Length)
        Marshal.Copy(myBuffer, 0, New IntPtr(SharePoint.ToInt32 + 4), myBuffer.Length)
    End Sub

Нужно вместо текста передать картинку.
Сперва преобразовал картинку в байтовый массив, для чего использовал готовый пример (Павел от 10.05.05 16:35):

Dim Data As Image = PicData.Image - моя картинка…
Dim MyOut As New IO.MemoryStream
Data.Save(MyOut, Imaging.ImageFormat.Png)
Dim myBuffer As Byte()
myBuffer = MyOut.GetBuffer

И в итоге получается:

    Public Sub Put(ByVal Data As Image)
        Dim MyOut As New IO.MemoryStream
        Data.Save(MyOut, Imaging.ImageFormat.Png) 'Тут формат указывается
        Dim myBuffer() As Byte
        myBuffer = MyOut.GetBuffer
        Marshal.WriteInt32(SharePoint, myBuffer.Length)
        Marshal.Copy(myBuffer, 0, New IntPtr(SharePoint.ToInt32 + 4), myBuffer.Length)
    End Sub

Правда, не работает…
Выдаёт: Additional information: Object reference not set to an instance of an object.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 На†уралист™



Вопросов: 5
Ответов: 3
 Web-сайт: pesap.com
 Профиль | | #1
Добавлено: 13.12.05 16:38


--------------
Прошу прощения! Не в файл, конечно же а в память...
Ошибочка вышла...

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 13.12.05 16:54
Попробуйте так:

myBuffer = MyOut.ToArray()

Ответить

Номер ответа: 3
Автор ответа:
 На†уралист™



Вопросов: 5
Ответов: 3
 Web-сайт: pesap.com
 Профиль | | #3
Добавлено: 14.12.05 17:23
Попробовал. Не работает...
Зато у меня теперь сомнения, а правильно ли я задал
число копируемых элементов массива в строке:
Marshal.Copy(myBuffer, 0, New IntPtr(SharePoint.ToInt32 + 4), myBuffer.Length)
?

Получается размер 17000 -> и ошибка.
А если подстаить скажем 1000, то всё ОК!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам