Mensen,
Ik heb een webservice die een plaatje naar mij toestuurt als een byte array.
Ik heb een appicatie die deze plaatjes omzet naar afbeeldingen (bitmap) zover werkt dit. Maar nu is het geval dat bij deze afbeeldingen de eerste bytes gescrambled zijn (kapot gemaakt tegen diefstal, en dit doen wij zelf). Nu wil ik graag de eerste bytes overslaan om het origenele plaatje weer te krijgen. Het lukt me wel om eerste het plaatje te downloaden en dan met binairy read en write dit er af te halen. Maar aangezien deze plaatje een soort van preview zijn lijkt het me niet handig om alles eerst te downloaden en moet het dus on de fly gebeuren.
Hier is de functie die een byte array omzet naar een bitmap, de point bData.scan0 is het begin punt van de afbeelding uit het geheugen, maar hoe kan ik zeggen dat hij pas by byte .... moet beginnen.
Ik heb een webservice die een plaatje naar mij toestuurt als een byte array.
Ik heb een appicatie die deze plaatjes omzet naar afbeeldingen (bitmap) zover werkt dit. Maar nu is het geval dat bij deze afbeeldingen de eerste bytes gescrambled zijn (kapot gemaakt tegen diefstal, en dit doen wij zelf). Nu wil ik graag de eerste bytes overslaan om het origenele plaatje weer te krijgen. Het lukt me wel om eerste het plaatje te downloaden en dan met binairy read en write dit er af te halen. Maar aangezien deze plaatje een soort van preview zijn lijkt het me niet handig om alles eerst te downloaden en moet het dus on de fly gebeuren.
Hier is de functie die een byte array omzet naar een bitmap, de point bData.scan0 is het begin punt van de afbeelding uit het geheugen, maar hoe kan ik zeggen dat hij pas by byte .... moet beginnen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| // ### TEMP CODE, NEEDED FOR SCREENSHOT CREATION.
private unsafe Bitmap BytesToBmp(byte[] bmpBytes)
{
// ### The new bitmap.
Bitmap bmp = new Bitmap(cApplicationSettings.getThumbWidth(), cApplicationSettings.getThumbHeight());
// ### Data.
BitmapData bData = bmp.LockBits(new Rectangle(new Point(), bmp.Size), ImageLockMode.WriteOnly,PixelFormat.Format24bppRgb);
// Copy the bytes to the bitmap object
Marshal.Copy(bmpBytes, 0, , bmpBytes.Length);
bmp.UnlockBits(bData);
// ### Return a bitmap.
return bmp;
} |