【问题标题】:Why am I getting alot of exceptions processing jpeg image byte streams为什么我在处理 jpeg 图像字节流时遇到很多异常
【发布时间】:2023-03-04 13:51:01
【问题描述】:

我正在尝试使用 Aspose.Imaging 21.7.0 版来压缩一些 .jpg 和 .png 字节数组。

我的 Winforms 点击事件:

    private void btnConvert_Click(object sender, EventArgs e)
    {
        _context.Images.Load();

        var images = _context.Images.Local.ToBindingList();
        
        foreach (var image in images)
        {
            if (image.ImageData != null)
            {
                image.MimeType = MimeTypes.GetMimeType(image.Filename.Trim());
                if (image.MimeType.StartsWith("image") && image.MimeType != "image/vnd.microsoft.icon")
                {

                    byte[] newImage;
                    using (MemoryStream stream = new MemoryStream(image.ImageData))
                    {
                        using (RasterImage myImage = (RasterImage) Image.Load(stream))
                        {
                            switch (image.MimeType)
                            {
                                case "image/png":
                                    PngOptions options = new PngOptions
                                    {
                                        CompressionLevel = 9,
                                        ColorType = PngColorType.IndexedColor,
                                        Progressive = true,
                                        Palette = ColorPaletteHelper.GetCloseImagePalette(myImage, 256,
                                            PaletteMiningMethod.Histogram)
                                    };

                                    using (MemoryStream memory = new MemoryStream())
                                    {
                                        myImage.Save(memory, options);
                                        memory.Position = 0;
                                        newImage = memory.ToArray();
                                    }

                                    break;
                                case "image/jpeg":
                                    JpegOptions saveOptions = new JpegOptions
                                    {
                                        BitsPerChannel = 8,
                                        CompressionType = JpegCompressionMode.Progressive,
                                        Quality = 100,
                                        ResolutionSettings = new ResolutionSetting(96.0, 96.0),
                                        ResolutionUnit = ResolutionUnit.Inch,
                                        ColorType = JpegCompressionColorMode.Cmyk,
                                        Palette = ColorPaletteHelper.GetCloseImagePalette(myImage, 256, PaletteMiningMethod.Histogram)
                                    };

                                    using (MemoryStream memory = new MemoryStream())
                                    {
                                        Debug.WriteLine(image.Filename);
                                        try
                                        {
                                            myImage.Save(memory, saveOptions); <<== Exceptions
                                        }
                                        catch (Exception exception)
                                        {
                                            Debug.WriteLine("Image Byte Array: " + image.ImageData);
                                        }
                                        
                                        memory.Position = 0;
                                        newImage = memory.ToArray();
                                    }

                                    break;
                                default:
                                    newImage = null;
                                    break;
                            }
                            
                        }
                    }

                    image.CompressedImageData = Compress(newImage);
                }
                else
                {
                    image.CompressedImageData = null;
                }
            }
        }

        var count = _context.SaveChanges();

        MessageBox.Show($@"{count} images compressed.");
    }

jpeg 图像出现很多异常。示例:

抛出异常:Aspose.Imaging.dll 中的“   ”

抛出异常:Aspose.Imaging.dll 中的“Aspose.Imaging.FileFormats.Dng.DngException”

抛出异常:Aspose.Imaging.dll 中的“   ”

抛出异常:Aspose.Imaging.dll 中的“Aspose.Imaging.CoreExceptions.ImageSaveException”

...全部从 jpeg 部分的myImage.Save(memory, saveOptions) 抛出。

任何帮助将不胜感激。

【问题讨论】:

  • 第一个提示:当你捕捉到异常时,记录完整的细节。这条语句:Debug.WriteLine("Image Byte Array: " + image.ImageData);... 告诉您没有关于已引发的异常。

标签: c# image jpeg aspose


【解决方案1】:

由于 Aspose.Imaging 是付费产品, 您应该在他们的网站上与他们联系以获得支持。

有一个专门针对 Aspose 产品的免费论坛: https://forum.aspose.com/

每个遇到过 Aspose 错误的人都知道,由于代码的混淆,这些错误很难理解,因此最好的解决方案是直接与他们联系。

【讨论】:

  • 我用 Aspose 开启了一个事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2020-12-03
  • 2011-03-18
  • 1970-01-01
  • 2020-10-02
  • 2015-12-20
相关资源
最近更新 更多