C# unsafe를 사용하여 이미지 처리 속도 향상
System.Drawing.Bitmap image
=
new
System.Drawing.Bitmap(
Properties.Settings.Default.BackgroundPicture);
System.Drawing.Imaging.BitmapData data
=
image.LockBits(
new
System.Drawing.Rectangle(
0
,
0
, image.Width, image.Height),
System.Drawing.Imaging.ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
unsafe
{
long
r
=
0
;
long
g
=
0
;
long
b
=
0
;
long
pixelCount
=
data.Height
*
data.Width;
byte
*
ptr
=
(
byte
*
)(data.Scan0);
for
(
int
i
=
0
; i
<
data.Height; i
++
)
{
for
(
int
j
=
0
; j
<
data.Width; j
++
)
{
r
+=
*
ptr;
g
+=
*
(ptr
+
1
);
b
+=
*
(ptr
+
2
);
ptr
+=
3
;
}
ptr
+=
data.Stride
-
data.Width
*
3
;
}
double
totalRGB
=
(r
/
pixelCount
+
g
/
pixelCount
+
b
/
pixelCount)
/
3
;
if
(totalRGB
>
127
)
{
this
.Foreground
=
new
SolidColorBrush(Color.FromRgb(
0
,
0
,
0
));
}
else
{
this
.Foreground
=
new
SolidColorBrush(Color.FromRgb(
255
,
255
,
255
));
}
}
또 하나 주의해야 할 것은 코드에 unsafe 문장을 사용하면 컴파일할 때/unsafe 파라미터를 넣어야 한다는 것이다. Visual Studio [프로젝트 속성]의 [컴파일 옵션]에서 이 스위치를 찾을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
양식 제출 후 제출 버튼 비활성화텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.