使用ImageHelper在HTC T3333的OpenNetCF上调整图像大小的问题

时间:2012-09-06 12:12:09

标签: c# windows-mobile compact-framework windows-mobile-6.5 opennetcf

我使用Chris Tacke文章中引用的ImageHelper类来使用OpenNetCF.Drawing命名空间在Compact Framework上调整大图像的大小。在许多拥有Windows Mobile 6.5版本Embebbed的设备中,该课程运行良好。但是在某些使用Windows Mobile版本6.1(强大的霍尼韦尔设备)和HTC T3333(Touch2)的设备中会抛出异常“0x887b0005”。使用此设备有任何限制吗?有另一种方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

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