Ik heb een plaatje van 658*492 pixels in 1 kleur (R: 242, G: 199, B: 131).
Deze wil ik doorlopen met de lockbits:
Nu zo hij dus nooit bij de break mogen komen. Alleen doet hij dat wel. De RGB waarden wat dan opeens
(0,0,131) en vanaf dan zit er een verschuiving in. DIt is precies na de eerste lijn.
Ik dacht altijd dat het een byte array was van breedte*hoogte*aantalbytesperpixel en dat ik hier zo doorheen kan lopen.
Heeft iemand een idee hoe dit komt en hoe ik dit kan voorkomen? Voorbeeldn van MSDN gaan ze ook van 3 bytes per pixel uit, alleen kopieren ze hem eerst. Volgens mij moet dat niets uitmaken.
Deze wil ik doorlopen met de lockbits:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| unsafe { Rectangle bounds = new Rectangle(Point.Empty, bitmap.Size); BitmapData bitmapData = bitmap.LockBits(bounds, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); Byte* pBase = (Byte*)bitmapData.Scan0.ToPointer(); try { byte y, u, v; int destIndex = 0; int maxSize = width * height * 3; // 3 bytes per pixel in RGB (little endian) for (int i = 0; i < maxSize; i += 3) { if (pBase[i + 2] != 242 || pBase[i + 1] != 199 || pBase[i + 0] != 131) { System.Diagnostics.Debugger.Break(); } } } finally { bitmap.UnlockBits(bitmapData); } } |
Nu zo hij dus nooit bij de break mogen komen. Alleen doet hij dat wel. De RGB waarden wat dan opeens
(0,0,131) en vanaf dan zit er een verschuiving in. DIt is precies na de eerste lijn.
Ik dacht altijd dat het een byte array was van breedte*hoogte*aantalbytesperpixel en dat ik hier zo doorheen kan lopen.
Heeft iemand een idee hoe dit komt en hoe ik dit kan voorkomen? Voorbeeldn van MSDN gaan ze ook van 3 bytes per pixel uit, alleen kopieren ze hem eerst. Volgens mij moet dat niets uitmaken.
if broken it is, fix it you should