2011-12-28 15 views
3

Accord.NET PointsMarker.csは、PixelFormat Format32bppArgbをサポートしているようです。 これはなぜUnsupportedImageFormatExceptionをキャッチしますか?UnsupportedImageFormatExceptionを修復する方法PixelFormat Format32bppArgb?

private void Harris() 
{ 
    try 
    { 
     img1 = new Bitmap(pictureBox1A.Image); 
     img2 = new Bitmap(pictureBox1B.Image); 
     var harris = new HarrisCornersDetector(0.04f, 1000f); 
     harrisPoints1 = harris.ProcessImage(img1).ToArray(); 
     harrisPoints2 = harris.ProcessImage(img2).ToArray(); 
     // Show the marked points in the original images 
     var img1mark = new PointsMarker(harrisPoints1).Apply(img1); 
     var img2mark = new PointsMarker(harrisPoints2).Apply(img2); 
     // Concatenate the two images together in a single image 
     var concatenate = new Concatenate(img1mark); 
     pictureBox.Image = concatenate.Apply(img2mark); 
    } 
    catch (UnsupportedImageFormatException) 
    { 
     const string S = "UnsupportedImageFormatException PixelFormat "; 
     Console.WriteLine(S + img1.PixelFormat); 
     Console.WriteLine(S + img2.PixelFormat); 
    } 
} 

Format32bppArgbが、私はそれを修復することができましたAccord.NET PointsMarker.csソースでサポートされているようだが、Console.WriteLineをが

UnsupportedImageFormatExceptionピクセルフォーマットFormat32bppArgb UnsupportedImageFormatExceptionピクセルフォーマットFormat32bppArgb

答えて

4

です追加することによってthis

// Convert to Format24bppRgb 
private static Bitmap Get24bppRgb(Image image) 
{ 
    var bitmap = new Bitmap(image); 
    var bitmap24 = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format24bppRgb); 
    using (var gr = Graphics.FromImage(bitmap24)) 
    { 
     gr.DrawImage(bitmap, new Rectangle(0, 0, bitmap24.Width, bitmap24.Height)); 
    } 
    return bitmap24; 
} 
+1

属性はSOで必要です。 http://stackoverflow.com/a/2016509/17034 –

+0

申し訳ありません。私の悪い。私は通常やります。 – jacknad

-2

この問題を回避する別の方法は、画像をSystem.Drawing.Image(例:xxx.jpg etc)として保存することです。イメージをイメージとして読み取ってビットマップに変換します。
それは私のために働いた。

関連する問題