2016-01-07 6 views
0

我检查图像文件的大小,如果文件很大,那么我会重新调整它的大小,以便处理速度更快。但是当我使用调整大小的代码时,我总是得到一个指向image的空引用异常。我试过调试 - >返回的调整大小的位图不是null,而是转换后的图像>image = new Image(x);为空。如果我删除调整大小函数,代码工作正常。图片<Bgr, byte>总是返回空

Image<Bgr, byte> image = null; 

foreach (string s in mylist) 
{ 
    Bitmap x = new Bitmap(Bitmap.FromFile(s)); 
    if (x.Width > 1000 || x.Height > 1000) 
    { 
     x = ResizekeepAspectRatio(x, 1000, 1000); 
     image = new Image<Bgr, byte>(x); 

    } 
    else 
    { 
     image = new Image<Bgr, byte>(x); 
    } 

    work(image, x, s); 
} 

---------------------------------------------------------------------- 

Bitmap ResizekeepAspectRatio(Bitmap imgPhoto, int Width, int Height) 
{ 
    int sourceWidth = imgPhoto.Width; 
    int sourceHeight = imgPhoto.Height; 
    int sourceX = 0; 
    int sourceY = 0; 
    int destX = 0; 
    int destY = 0; 

    float nPercent = 0; 
    float nPercentW = 0; 
    float nPercentH = 0; 

    nPercentW = ((float)Width/(float)sourceWidth); 
    nPercentH = ((float)Height/(float)sourceHeight); 
    if (nPercentH < nPercentW) 
    { 
     nPercent = nPercentH; 
     destX = System.Convert.ToInt16((Width - 
         (sourceWidth * nPercent))/2); 
    } 
    else 
    { 
     nPercent = nPercentW; 
     destY = System.Convert.ToInt16((Height - 
         (sourceHeight * nPercent))/2); 
    } 

    int destWidth = (int)(sourceWidth * nPercent); 
    int destHeight = (int)(sourceHeight * nPercent); 

    Bitmap bmPhoto = new Bitmap(Width, Height, 
         PixelFormat.Format24bppRgb); 
    bmPhoto.SetResolution(imgPhoto.HorizontalResolution, 
        imgPhoto.VerticalResolution); 

    Graphics grPhoto = Graphics.FromImage(bmPhoto); 
    grPhoto.Clear(Color.Red); 
    grPhoto.InterpolationMode = 
      InterpolationMode.HighQualityBicubic; 

    grPhoto.DrawImage(imgPhoto, 
     new Rectangle(destX, destY, destWidth, destHeight), 
     new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), 
     GraphicsUnit.Pixel); 

    grPhoto.Dispose(); 
    return bmPhoto; 
} 

回答

0

我很难复制错误。我传入了一堆图像并将它们保存出来,但它们都保存正确 - 即使那些重新调整大小的图像。

这让我觉得它必须是一些特定的图像失败或它可能是与Emgu配置问题。

你可以发布图片失败吗?