以下的源代码确实与Windows运行良好,直到vista。
使用Windows 7(和新的.net 3.5)时,当我尝试从我的尼康D90加载原始图像文件时,它总会产生内存不足的异常。
有些人可能会说“不支持加载nef”,但它确实运行得很好,直到vista,只有Windows 7打破它,所以我不同意。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace QuickImageLoader
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult res = openFileDialog1.ShowDialog();
if (res == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); // crash happens
pictureBox1.Refresh();
}
}
}
}
Download a sample nef file to reproduce error.
这是Windows 7中的错误吗?在.net 3.5?或者它是否应该从未与XP / Vista一起使用?
[更新]由于一些人既不知道也不阅读上面的介绍:加载这样的nef确实可以在XP / Vista 上安装,而无需安装Nikon Raw Codec 。并且安装编解码器并不能解决问题(伙计们,它与编解码器叹息无关)。
答案 0 :(得分:2)
我可以确认来自Nikon Coolpix P5000的JPEG照片的这种行为。
似乎文件的内部结构存在一些问题,这会混淆GDI + jpeg加载器。我使用外部图像查看器将图像重新编码为jpg,然后一切都恢复正常。我无法确认是否仅在Win7上找到此行为
所有人都找到了原因吗?或者这可能是GDI +中的一个错误?
答案 1 :(得分:0)
Image.FromFile本身不支持很多图像类型,但可以安装更多图像类型。
那么,你是否在Vista中安装了一些能让它工作的东西?像尼康编解码器包或者会增加支持的东西?
该错误消息表示以下两种情况之一:
我从评论中看到,这里有一些讨论。我不知道微软是否明确地自行提取格式,或者被迫这样做,但我可以确认GDI +在我的Windows 7安装上不支持NEF,因此无论XP或Vista是否支持它,无论是为什么它不再支持的原因,Windows 7不支持开箱即用的GDI +中的NEF加载。
所以你需要安装一些东西。
答案 2 :(得分:0)
您安装了尼康原始编解码器吗? Windows本身(和.NET Framework)不知道处理Nikons Raw格式。