Graphics.DrawImage는 의도하지 않게 이미지를 다듬을 수 있습니까?
문제
비트 맵을 사용하고 24 bpp로 변환하는 코드를 사용하여 해당 파일 형식이 필요한 프로그램에서 사용할 수 있습니다. 코드는 다음과 같습니다.
using (Bitmap tempImage = new Bitmap(pageToScan.FullPath))
{
if (tempImage.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb)
{
using (Bitmap tempImage2 = new Bitmap(tempImage.Size.Width, tempImage.Size.Height,
System.Drawing.Imaging.PixelFormat.Format24bppRgb))
{
using (Graphics g = Graphics.FromImage(tempImage2))
{
g.DrawImage(tempImage, new Point(0, 0));
}
RecognizeBitmap(pageToScan, tempImage2); //Thanks to Tim on this refactoring.
}
}
else
RecognizeBitmap(pageToScan, tempImage);
}
위의 코드에 대한 두 가지 질문이 있습니다.
- 특정 이미지로, 나는 이것이 Tempimage2에서 가장 오른쪽으로 200 픽셀을 잘라 냈다고 생각합니다. 이게 가능해? 어떻게 이런 일이 일어날 수 있으며 어떻게 멈출 수 있습니까? 내 친구는 TIFF 파일의 보폭과 관련이 있다고 제안했습니다.
- 메모리에서 이미지를 24 bpp로 변환하는 더 빠른 방법이 있습니까?
해결책
더 좋은 방법은 사용하는 것입니다 BitMap.Clone 방법. 이것은 pixelforMat을 매개 변수로 간주합니다.
using (Bitmap tempImage = new Bitmap(pageToScan.FullPath))
{
if (tempImage.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb)
{
Rectangle r = new Rectangle(0, 0, tempImage.Width, tempImage.Height);
RecognizeBitmap(pageToScan, tempImage.Clone(r, PixelFormat.Format24bppRgb);
}
else
{
RecognizeBitmap(pageToScan, tempImage);
}
}
제휴하지 않습니다 StackOverflow