Я создаю веб-запрос для получения большого jpeg в виде массива байтов. Это, в свою очередь, может быть преобразовано в поток памяти. Мне нужно получить эти данные в bitmapdata, чтобы я мог снова скопировать его в массив байтов. Действительно ли я полагаю, что массив байтов, возвращенный из потока памяти, не совпадает с байтовым массивом, возвращаемым из marshall-копии битмапдата в массив байтов?Преобразование потока памяти в bitmapdata
Я не хочу писать в памяти поток к изображению, как он будет возвращать аут ошибки памяти из-за его размера и тот факт, я использую компактный Cf C# 2.
это мой вызов сервер ..
HttpWebRequest _request = (HttpWebRequest)WebRequest.Create("A url/00249.jpg");
_request.Method = "GET";
_request.Timeout = 5000;
_request.ReadWriteTimeout = 20000;
byte[] _buffer;
int _blockLength = 1024;
int _bytesRead = 0;
MemoryStream _ms = new MemoryStream();
using (Stream _response = ((HttpWebResponse)_request.GetResponse()).GetResponseStream())
{
do
{
_buffer = new byte[_blockLength];
_bytesRead = _response.Read(_buffer, 0, _blockLength);
_ms.Write(_buffer, 0, _bytesRead);
} while (_bytesRead > 0);
}
Это мой код для чтения байтового массива из bitmapdata.
Bitmap Sprite = new Bitmap(_file);
Bitmapdata RawOriginal = Sprite.LockBits(new Rectangle(0, 0, Sprite.Width, Sprite.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);
int origByteCount = RawOriginal.Stride * RawOriginal.Height;
SpriteBytes = new Byte[origByteCount];
System.Runtime.InteropServices.Marshal.Copy(RawOriginal.Scan0, SpriteBytes, 0, origByteCount);
Sprite.UnlockBits(RawOriginal);
Примечание: Я не хочу использовать это:
Bitmap Sprite = new Bitmap(_file);
Я хочу, чтобы перейти от:
MemoryStream _ms = new MemoryStream();
в
System.Runtime.InteropServices.Marshal.Copy(RawOriginal.Scan0, SpriteBytes, 0, origByteCount);
с помощью каких-либо преобразований необходимы без запись в растровое изображение.
И почему бы не использовать FileStream? Я предполагаю, что вы говорите, что у вас нет места в памяти, но у вас есть место в файловой системе? – CrazyDart
@CrazyDart HI, спасибо за ваш ответ. Конечная проблема заключается в том, чтобы извлечь части этого большего изображения на более мелкие изображения (aka Sprite).Я бы не знал, возможно ли это с помощью фильтра. Спасибо за ваши мысли, хотя ... –