Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Graphics.DrawImage是否会无意中修剪图像?_C#_Graphics_Tiff - Fatal编程技术网

C# Graphics.DrawImage是否会无意中修剪图像?

C# Graphics.DrawImage是否会无意中修剪图像?,c#,graphics,tiff,C#,Graphics,Tiff,我使用的代码可以获取位图并将其转换为24 BPP,这样我就可以在特别需要该文件格式的程序中使用它。代码如下: using (Bitmap tempImage = new Bitmap(pageToScan.FullPath)) { if (tempImage.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb) { using (Bitmap tempIm

我使用的代码可以获取位图并将其转换为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);
    }
关于上述代码,我有两个问题:

  • 我想,有一个特别的形象 这剪掉了最右边的200个 tempImage2右侧的像素。是 这可能吗?这怎么可能 发生了,我怎么才能阻止它?A. 我的朋友建议 可能跟你的步伐有关 正在使用的TIFF文件
  • 有没有 将图像转换为24的更快方法 内存中的BPP

  • 更好的方法是使用该方法。这将以像素格式作为参数:

    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);    
        }
    }
    

    酷。我应该在tempImage.Clone上放一个标签吗?是的。您可能应该这样做,同时重构整个方法,以消除任何剩余的重复代码。