C# 使用ImageHelper在带有HTC T3333的OpenNetCF上调整图像大小时出现问题

C# 使用ImageHelper在带有HTC T3333的OpenNetCF上调整图像大小时出现问题,c#,windows-mobile,compact-framework,windows-mobile-6.5,opennetcf,C#,Windows Mobile,Compact Framework,Windows Mobile 6.5,Opennetcf,我使用文章中引用的ImageHelper类,使用OpenNetCF.Drawing命名空间在Compact Framework上调整大型图像的大小。在许多使用WindowsMobile6.5版本的设备中,这个类工作得非常好。然而,在Windows Mobile版本6.1(强健的霍尼韦尔设备)和HTC T3333(Touch2)的一些设备中,抛出异常“0x887b0005”。本设备的使用是否有任何限制?有一种替代方法可以解决此问题?0x887B0005是一种COM错误,我通常只在您试图显示的图像使

我使用文章中引用的ImageHelper类,使用OpenNetCF.Drawing命名空间在Compact Framework上调整大型图像的大小。在许多使用WindowsMobile6.5版本的设备中,这个类工作得非常好。然而,在Windows Mobile版本6.1(强健的霍尼韦尔设备)和HTC T3333(Touch2)的一些设备中,抛出异常“0x887b0005”。本设备的使用是否有任何限制?有一种替代方法可以解决此问题?

0x887B0005是一种COM错误,我通常只在您试图显示的图像使用的颜色格式不受Compact Framework支持时看到这种错误。这可能会解决以下问题:

IBitmapImage imageBitmap;
ImageInfo imageInfo;
IImage image;

var imageFactory = new ImagingFactoryClass();
imageFactory.CreateImageFromStream(new StreamOnFile(fileStream), out image);
image.GetImageInfo(out imageInfo);

//verify we're a CF-supported image format
if (imageInfo.PixelFormat != PixelFormat.Format16bppRgb555 
    && imageInfo.PixelFormat != PixelFormat.Format16bppRgb565 
    && imageInfo.PixelFormat != PixelFormat.Format24bppRgb 
    && imageInfo.PixelFormat != PixelFormat.Format32bppRgb)
{
    imageInfo.PixelFormat = PixelFormat.Format24bppRgb; 
}

imageFactory.CreateBitmapFromImage(
             image,  
             (uint)width, 
             (uint)height, 
             imageInfo.PixelFormat, 
             InterpolationHint.InterpolationHintDefault, 
             out imageBitmap);

var bmp = ImageUtils.IBitmapImageToBitmap(imageBitmap);

谢谢Chris,在你回复后,我意识到问题是我在使用图像。因为它们是由扫描仪设备捕获的,并且设备的像素格式未知,因此导致了错误。非常感谢。我现在面临一个小问题,在一些WM设备中,只有当我在上面提到的方法上调试时,我得到一个异常“该方法或操作未实现。”行。CreateImageFromStream(…和在线CreateBitmapFromImage(…如果我继续运行(F5)执行正常。此异常可能会导致我将来出现任何问题?我在使用此代码时从未见过此异常,因此我不知道它是否会对未来产生任何潜在影响。好的!我将使用不同的设备进行测试,以查看是否有任何风险。如果发生异常,我将通过此问题进行报告。谢谢!如果我猜的话,源像素格式是不受支持的,但是当您显式地将其设置为受支持的格式时,缩略图会创建得很好。