안녕하세요...
어디에선가 칼라이미지를 흑백으로 변환하는소스가 있길래, 한번 해 보았는데 이미지 파일이 bmp파일만 되던데... (만약, bmp파일이 아닌 다른 파일일 경우 다음과 같은 에러발생 'Can Only modify an image if it contains a bitmap')
bmp파일이 아닌 다른 파일은 변환할수 없나요?....
칼라이미지를 흑백으로 변환소스
function TForm1.ToGrayscale(C: TColor): TColor;
var
Blu, Green, Red, Y: double;
begin
Blu := ( ( C and $ff0000 ) shr 16 );
Green := ( ( C and $ff00 ) shr 8 );
Red := ( C and $ff );
Y := ( Blu * 0.11 ) + ( Green * 0.59 ) + ( Red * 0.30 );
Result := TColor(Trunc(Y) * integer(65793));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
C: TCanvas;
R: TRect;
x, y: integer;
begin
C := Image1.Canvas;
R := C.ClipRect;
for y := R.Top to R.Bottom do
for x := R.Left to R.Right do
C.Pixels[x, y] := ToGrayscale(C.Pixels[x, y]);
사이트: http://www.efg2.com/lab/
거기에 보시면 "HistoStretch Gray Scale Images" 가 있는데
예제 프로그램도 다운받을 수 있어서 보니까
Gray Scale 이 되던데요...
사이트에 있는 예제 프로그램:
http://www.efg2.com/lab/ImageProcessing/HistoStretchGrays.ZIP