Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net TIFF到JPEG的转换会产生更大的图像大小_.net_C# 4.0 - Fatal编程技术网

.net TIFF到JPEG的转换会产生更大的图像大小

.net TIFF到JPEG的转换会产生更大的图像大小,.net,c#-4.0,.net,C# 4.0,我有下面的函数,它从旧数据库中获取存储为blob的tiff,并将其转换为jpeg,然后将其存储为varbinary(max)到sql server中 public byte[] ConvertImage(byte[] imageData) { if (imageData == null) return null; using (var image = Image.FromStream(new MemoryStream(imageData))) { usin

我有下面的函数,它从旧数据库中获取存储为
blob
tiff
,并将其转换为
jpeg
,然后将其存储为
varbinary(max)
sql server

public byte[] ConvertImage(byte[] imageData)
{
    if (imageData == null) return null;
    using (var image = Image.FromStream(new MemoryStream(imageData)))
    {
        using (Bitmap bmp = new Bitmap(image))
        {
            using (MemoryStream outStream = new MemoryStream())
              {
                  bmp.Save(outStream, ImageFormat.Jpeg);
                  return outStream.ToArray();
              }
        }
    }
}
由于某些原因,转换会导致图像大小增加10倍或更多。我做错什么了吗


感谢您的帮助

您可以尝试更改JPEG压缩级别:


不过,JPEG并不总是比TIFF好。TIFF是一种容器格式,可以使用各种图像压缩格式,因此您的图像可以使用其他方法进行压缩。

您需要添加一个
编码器参数来提高质量。尝试以下方法:

public byte[] ConvertImage(byte[] imageData)
{
    if (imageData == null) return null;
    using (var image = Image.FromStream(new MemoryStream(imageData)))
    {
        using (Bitmap bmp = new Bitmap(image))
        {
            using (MemoryStream outStream = new MemoryStream())
            {
                var ratio = new EncoderParameter(Encoder.Quality, 50L); //adjust this value for desired compression 
                var codecParams = new EncoderParameters(1);
                codecParams.Param[0] = ratio;
                bmp.Save(outStream, GetEncoder(ImageFormat.Jpeg), codecParams);
                return outStream.ToArray();
            }
        }
    }
}

ImageCodecInfo GetEncoder(ImageFormat format)
{
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
    foreach (ImageCodecInfo codec in codecs)
        if (codec.FormatID == format.Guid)
            return codec;
    return null;
}

如果您的TIFF图像使用有损压缩,那么除非您想降低质量因数,否则不要使用它。TIFF==数千种不兼容的文件格式。我试了一下,祝你好运。+1:感谢你指出
TIFF
支持多种压缩格式。