Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // CSharpFilters.BitmapFilter
- public unsafe static bool EdgeDetectHorizontal(Bitmap b)
- {
- Bitmap bitmap = (Bitmap)b.Clone();
- BitmapData bitmapData = b.LockBits(new Rectangle(0, 0, b.get_Width(), b.get_Height()), 3, 137224);
- BitmapData bitmapData2 = bitmap.LockBits(new Rectangle(0, 0, b.get_Width(), b.get_Height()), 3, 137224);
- int stride = bitmapData.get_Stride();
- IntPtr scan = bitmapData.get_Scan0();
- IntPtr scan2 = bitmapData2.get_Scan0();
- byte* ptr = (byte*)((void*)scan);
- byte* ptr2 = (byte*)((void*)scan2);
- int num = stride - b.get_Width() * 3;
- int num2 = b.get_Width() * 3;
- ptr += stride;
- ptr2 += stride;
- for (int i = 1; i < b.get_Height() - 1; i++)
- {
- ptr += 9;
- ptr2 += 9;
- for (int j = 9; j < num2 - 9; j++)
- {
- int num3 = (int)((ptr2 + stride - 9)[0] + (ptr2 + stride - 6)[0] + (ptr2 + stride - 3)[0] + (ptr2 + stride)[0] + (ptr2 + stride + 3)[0] + (ptr2 + stride + 6)[0] + (ptr2 + stride + 9)[0] - (ptr2 - stride - 9)[0] - (ptr2 - stride - 6)[0] - (ptr2 - stride - 3)[0] - (ptr2 - stride)[0] - (ptr2 - stride + 3)[0] - (ptr2 - stride + 6)[0] - (ptr2 - stride + 9)[0]);
- if (num3 < 0)
- {
- num3 = 0;
- }
- if (num3 > 255)
- {
- num3 = 255;
- }
- (ptr + stride)[0] = (byte)num3;
- ptr++;
- ptr2++;
- }
- ptr += 9 + num;
- ptr2 += 9 + num;
- }
- b.UnlockBits(bitmapData);
- bitmap.UnlockBits(bitmapData2);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement