【发布时间】:2016-03-03 12:53:48
【问题描述】:
我正在尝试在装有 Windows CE 的平板电脑上制作照片幻灯片。我想在公式的 PictureBox 中显示的每张图像都是 *.jpg 类型的。文件是例如~1MB 大,分辨率为 2304x1728。 当我使用以下代码时,我得到了 OutOfMemory 异常。
Bitmap bitmap = new Bitmap(file_name)
PictureBox.Image = bitmap
经过研究,我发现 *.jpg 文件可能“太大”而无法放入位图。在 VS2008 上使用 Compact Framework,我无法使用类似
Image image1 = Image.From(file_name)
如何从 jpg-Files 获取图像到我的 PictureBox ?
编辑[1]:
感谢您的 cmets。我发现我的图片无法正确加载,因为我的设备没有足够的内存来临时加载“巨大”的图片。我通过编写一些代码来解决这个问题,这些代码在我将图像复制到我的设备之前调整它们的大小。
Image bitmapNew = null;
using (Bitmap bitmap = (Bitmap)Image.FromFile(filename))
{
double proportion = (double) bitmap.Width / bitmap.Height;
proportion = Math.Round(proportion, 2);
if (proportion > 1)
{
iWidth = iWidthMax;
iHeight = (int)(iWidthMax / proportion);
}
else
{
iHeight = iHeightMax;
iWidth = (int) (iHeightMax * proportion);
}
bitmapNew = new Bitmap(bitmap, new Size(iWidth, iHeight));
}
设备的分辨率定义参数iWidthMax & iHeightMax
【问题讨论】:
-
您的 CE 设备的屏幕尺寸是多少?似乎最简单的答案是不要尝试显示比您的设备屏幕大得多的图像。
标签: c# visual-studio-2008 jpeg compact-framework windows-ce