저는 대학에서 컴퓨터 학습 문제를 연구하고 있습니다. 첫 번째 작업은 이미지를 흑백으로 변환하는 것입니다.이미지 투명도 제거
내 이미지에 투명성이 있고 문제를 제거하는 방법을 모르겠다.
내가 노력하고 무엇 :
public static Bitmap RemoveTransparency (Bitmap src)
{
Bitmap target = new Bitmap (src.Size.Width, src.Size.Height);
Graphics g = Graphics.FromImage (target);
g.Clear (Color.White);
g.DrawImage (src, 0, 0);
return target;
}
입력 영상의 예 :
"RemoveTransparency"호출 후 출력 이미지의 예 :
누가 무슨 일이 일어나는 지 아나? 배경색이 같고 글자가 같은 색으로 보입니다 ... 그리고 흰색으로 칠하면 내 배경이 검은 색입니까?
감사합니다.
당신의'src' 이미지의 소스는 무엇입니까? 어떤면에서 "투명성"을 갖고 있습니까? 실제로 예인 경우 투명 픽셀의 알파 값이 0 인 32bpp 비트 맵, 게시 한 코드가 작동합니다. 따라서 원본 이미지와 관련하여 중요한 정보를 일부 생략하는 것은 아닙니다. 소스 비트 맵을 자체적으로 초기화하는 것을 포함하여 전체 코드 예제를 게시해야합니다. http://stackoverflow.com/help/mcve –
을 참조하십시오. 기록 : 질문에 포함 된 정확한 이미지를 다운로드하고 질문에 코드를 실행 한 다음 결과를 새로운 .png 파일에 저장했습니다. 그리고 예상대로 잘 작동합니다. 대답은 코드에있는 다른 버그를 해결하기위한 해결 방법 일 수도 있지만 원래 비트 맵에서 사용한 비트 맵에서 찾은 투명도를 사용하는 것으로 예상하는 경우이를 수정하는 것은 실제로 올바른 방법이 아닙니다. 귀하의 질문에있어. –
@PeterDuniho 여기에 잘못된 정보가 퍼지고 있습니다. 나는 또한 이미지를 다운로드했다. 투명 블랙 픽셀을 가지고 있습니다. 'Graphics' 객체의 디폴트'CompositingMode'는'SourceCopy'입니다. "... 결과를 새로운 .png 파일에 저장했습니다." PNG 파일에는 투명도가 있으므로 투명한 검은 픽셀이 출력됩니다. 알파 채널이없는 JPG에 저장해보십시오. 흰색 배경 위에 투명한 검은 색 픽셀을 그릴 때 알파 블렌딩이 사용되지 않았기 때문에 이미지가 모두 검정색임을 알 수 있습니다. –