图像不会转换为位图

问题描述 投票:1回答:1

我当前遇到无法将图像转换为位图的问题。

这是有问题的代码:

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

我曾尝试在线寻求帮助,但找不到任何相关内容,所以在这里,如果有我不知道的这张照片(或一组照片)特别特别的地方,请原谅,我不是图像设计师以任何方式,形状或形式。

祝你有美好的一天。

c# winforms bitmap
1个回答
1
投票

我在十六进制编辑器中查看了您提供的名为“ 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仍然可以读取它的原因。

© www.soinside.com 2019 - 2024. All rights reserved.