의 C# 관리되는 GDI + 라이브러리에서 C# 비트 맵의 가장자리 공백을 감지하는 솔루션을 찾고 있습니다.C# GDI 가장자리 공백 검출 알고리즘
이미지 중 하나를 투명 또는 흰색이의 400 배 사진의 대부분의 가장자리 주위에 대한 2000px 공백으로 8000x8000px입니다 것입니다.
가장자리를 찾는 가장 효율적인 방법은 무엇입니까 x, y, 높이 및 너비 좌표는입니까? 나는 픽셀 단위로 픽셀을 시도했지만 매우 느린 것을 발견했다. 용액
가업데이트 --Added 좌/우/상/하 경계 이미지 세부 센터 이미지
문제 지금 투명한 (0 %) 작물 또는 백색 (#FFFFFF) 픽셀.
var top = bitmap.Height;
var left = bitmap.Width;
var right = 0;
var bottom = 0;
...
var pData = pData0 + (y * data.Stride) + (x * 4);
var xyAlpha = pData[3];
var xyBlue = pData[0];
var xyGreen = pData[1];
var xyRed = pData[2];
if ((xyAlpha > 0) || (xyRed != 255 && xyGreen != 255 && xyBlue != 255)) {
if (y < top)
top = y;
if (y > bottom)
bottom = y;
if (x < left)
left = x;
if (x > right)
right = x;
}
...
var cropWidth = right - left;
var cropHeight = bottom - top;
var cropX = top;
var cropY = left;
var cacheBitmap = new Bitmap(cropWidth, cropHeight, PixelFormat.Format32bppArgb);
using (var cacheGraphics = Graphics.FromImage(cacheBitmap)) {
cacheGraphics.DrawImage(context.Image, new Rectangle(0, 0, cropWidth, cropHeight), cropX, cropY, cropWidth, cropHeight, GraphicsUnit.Pixel);
}