我当前遇到无法将图像转换为位图的问题。
这是有问题的代码:
private void btnPicture_Click(object sender, EventArgs e)
{
OpenFileDialog opFile = new OpenFileDialog();
opFile.Title = "Choose a picture!";
opFile.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
string appPath = Path.GetDirectoryName(Application.ExecutablePath);
if (Directory.Exists(appPath) == false)
{
Directory.CreateDirectory(appPath);
}
if (opFile.ShowDialog() == DialogResult.OK)
{
try
{
Character.imageName = opFile.SafeFileName;
Stream stream = opFile.OpenFile(); //<------ This is the line in question
Bitmap toResize = new Bitmap(stream);
Image characterImage = ResizeImage(toResize, 200, 306);
imgCharacter.Image = characterImage;
characterImage.Save("Images/" + Character.imageName);
}
catch (Exception exp)
{
MessageBox.Show("Please select a picture, exception code: " + exp.Message);
}
}
else
{
opFile.Dispose();
}
}
现在基本上,此代码适用于我尝试过的每个图像,但1除外。我的朋友尝试上传的单个图像将因以下错误而崩溃:参数无效。
我尝试过的:
链接到图像:https://cdn.discordapp.com/attachments/413040202307731466/713873776143499294/babar1.jpg
我曾尝试在线寻求帮助,但找不到任何相关内容,所以在这里,如果有我不知道的这张照片(或一组照片)特别特别的地方,请原谅,我不是图像设计师以任何方式,形状或形式。
祝你有美好的一天。
我在十六进制编辑器中查看了您提供的名为“ barbar1.jpg”的图像,并且可以在开始时看到RIFF WEBPVP8标记。这意味着图像不是JPG文件,而是WEBP文件。
https://en.wikipedia.org/wiki/WebP
您收到的错误是从流初始化新的位图时。位图类仅支持BMP,GIF,EXIF,JPG,PNG和TIFF。
Microsoft Paint支持WEBP,这就是为什么您可以打开它并查看它。 Microsoft和其他图像查看器将忽略文件扩展名,并根据文件数据本身的格式来解析图像。这就是为什么您能够将文件重命名为PNG,JPG,BMP等,并且Paint仍然可以读取它的原因。