Question

J'utilise un code qui prend une bitmap et le convertit en BPP afin que je puisse l'utiliser dans un programme qui requiert spécifiquement ce format de fichier. Voici le code:

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

J'ai deux questions sur le code ci-dessus:

  1. Avec une image particulière, je pense que cela a coupé le plus à droite 200 pixels à droite de tempImage2. Est c'est possible? Comment cela pourrait-il arriver, et comment puis-je l'arrêter? UNE un de mes amis a suggéré que pourrait avoir à faire avec la foulée de le fichier TIFF utilisé.
  2. Y a-t-il un moyen plus rapide de convertir une image en 24 BPP en mémoire?
Était-ce utile?

La solution

Une meilleure solution consiste à utiliser Bitmap.Clone . Cela prend un PixelFormat en tant que paramètre:

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);    
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top