C# 使用JPEG位图编码器时图像是否损坏?

C# 使用JPEG位图编码器时图像是否损坏?,c#,c++,jpegbitmapencoder,C#,C++,Jpegbitmapencoder,我编写了缩放jpeg并存储到文件中的函数,如下所示 bool ResizeJpeg(unsigned char* _jpegDataBuff, int _buffLength, int _newSize_X, int _newSize_Y) { try { //Decode to bitmap UnmanagedMemoryStream^ mStream = gcnew UnmanagedMemoryStream(_jpegDataBuff, _b

我编写了缩放jpeg并存储到文件中的函数,如下所示

bool ResizeJpeg(unsigned char* _jpegDataBuff, int _buffLength, int _newSize_X, int _newSize_Y)
{
    try
    {
        //Decode to bitmap
        UnmanagedMemoryStream^ mStream = gcnew UnmanagedMemoryStream(_jpegDataBuff, _buffLength);
        JpegBitmapDecoder^ decoder = gcnew JpegBitmapDecoder(mStream, BitmapCreateOptions::PreservePixelFormat, BitmapCacheOption::OnLoad);
        BitmapSource^ bitmapSource = decoder->Frames[0];

        //Scale bitmap into new size
        BitmapSource^ bitmapSourceScaled = ResizeBitmap(bitmapSource, _newSize_X, _newSize_Y);

        //Encode to Jpeg
        FileStream^ fileStream = gcnew FileStream("1.jpg", FileMode::Create);
        JpegBitmapEncoder^ encoder = gcnew JpegBitmapEncoder();
        encoder->QualityLevel = _quality;
        encoder->Frames->Add(BitmapFrame::Create(bitmapSourceScaled));
        encoder->Save(fileStream);
        fileStream->Close();

        return true;
    }
    catch (System::Exception^)
    {
        return false;
    }
}

BitmapSource ResizeBitmap(BitmapSource source, double nWidth, double nHeight)
{
    TransformedBitmap tbBitmap = new TransformedBitmap(source,
                                              new ScaleTransform(nWidth / source.PixelWidth,
                                                  nHeight / source.PixelHeight, 0, 0));
    return tbBitmap;
}
此代码工作正常,但有时会导致结果图像损坏,如下所示

请帮助我,如何修复这个错误

非常感谢


T&T

这看起来是自己造成的。从代码中删除try/catch,这只会隐藏问题。@HansPassant:谢谢!