자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 안드로이드 이미지 픽셀 추출 관련 질문
2016.04.19 11:00
안녕하세요.
현재 델파이 10 seattle로 안드로이드 어플 개발중입니다.
어플 내에서 생성한 PNG이미지를 TBitmap에 불러와 픽셀을 추출하는 프로그램을 구현중입니다만 잘 되지 않네요.
아래는 제가 코딩한 소스입니다.
var
ABitmap: TBitmap;
a: TStringlist;
sPixelData : string;
x,y:integer;
vBitMapData: TBitmapData;
begin
TThread.queue(nil,
procedure
begin
//PNG이미지 Load.
ABitmap := TBitmap.CreateFromFile(GetImagePath + '/' + lboxMessageList.Selected.Text);
end);
if ABitmap.Map(TMapAccess.ReadWrite, vBitMapData) then
begin
for x := 0 to ABitmap.Width - 1 do
begin
for y := 0 to ABitmap.Height - 1 do
begin
//(x,y)의 Pixel Color가 하얀색이 아닐경우 sPixelData에 '1'을 저장
if vBitMapData.GetPixel(x, y) <> TAlphaColors.White then
sPixelData := sPixelData + '1'
//(x,y)의 Pixel Color가 하얀색일 경우 sPixelData에 '0'을 저장
else
sPixelData := sPixelData + '0';
end;
//한 줄 추출이 끝나면 띄어쓰기
sPixelData := sPixelData+ chr(13) + chr(10);
end;
end;
end;
저장한 png이미지를 보면 재대로 그려져 있습니다만, 위의 루틴이 끝나고 sPixelData를 보면 모두 '1'만 저장되있더군요.
문제 해결법을 아신다면 답변 부탁드립니다.
Delphi 안드로이드 이미지 픽셀 추출 관련 질문
2016.04.19 11:00
안녕하세요.
현재 델파이 10 seattle로 안드로이드 어플 개발중입니다.
어플 내에서 생성한 PNG이미지를 TBitmap에 불러와 픽셀을 추출하는 프로그램을 구현중입니다만 잘 되지 않네요.
아래는 제가 코딩한 소스입니다.
var
ABitmap: TBitmap;
a: TStringlist;
sPixelData : string;
x,y:integer;
vBitMapData: TBitmapData;
begin
TThread.queue(nil,
procedure
begin
//PNG이미지 Load.
ABitmap := TBitmap.CreateFromFile(GetImagePath + '/' + lboxMessageList.Selected.Text);
end);
if ABitmap.Map(TMapAccess.ReadWrite, vBitMapData) then
begin
for x := 0 to ABitmap.Width - 1 do
begin
for y := 0 to ABitmap.Height - 1 do
begin
//(x,y)의 Pixel Color가 하얀색이 아닐경우 sPixelData에 '1'을 저장
if vBitMapData.GetPixel(x, y) <> TAlphaColors.White then
sPixelData := sPixelData + '1'
//(x,y)의 Pixel Color가 하얀색일 경우 sPixelData에 '0'을 저장
else
sPixelData := sPixelData + '0';
end;
//한 줄 추출이 끝나면 띄어쓰기
sPixelData := sPixelData+ chr(13) + chr(10);
end;
end;
end;
저장한 png이미지를 보면 재대로 그려져 있습니다만, 위의 루틴이 끝나고 sPixelData를 보면 모두 '1'만 저장되있더군요.
문제 해결법을 아신다면 답변 부탁드립니다.
해결했습니다.
이미지 생성시에 Canvas.Clear(TAlphaColors.White)를 Canvas.BeginScene 호출 후에 해주어야 했네요.