Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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
C# Silverlight调整图像大小和最终文件大小_C#_Silverlight_Image - Fatal编程技术网

C# Silverlight调整图像大小和最终文件大小

C# Silverlight调整图像大小和最终文件大小,c#,silverlight,image,C#,Silverlight,Image,我使用silverlight和 一切正常,但我的最终文件大小约为300KB,分辨率为400x300 当我在MS Paint上打开它并再次将其保存为jpg时,大小设置为正常 我的嫌疑犯是de enconde o文件是一个(png),但我现在不知道如何 我的代码: public static byte[] resize(string extension,int width,int height,int orientation) { //Decoders.Add

我使用silverlight和

一切正常,但我的最终文件大小约为300KB,分辨率为400x300

当我在MS Paint上打开它并再次将其保存为jpg时,大小设置为正常

我的嫌疑犯是de enconde o文件是一个(png),但我现在不知道如何

我的代码:

        public static byte[] resize(string extension,int width,int height,int orientation)
    {
        //Decoders.AddDecoder<BmpDecoder>();
        //Decoders.AddDecoder<PngDecoder>();
        Decoders.AddDecoder<JpegDecoder>();
        //Decoders.AddDecoder<GifDecoder>();

        var newImg = new ExtendedImage();
        if (orientation == 0)
            newImg = ExtendedImage.Resize(img, width, height, new ImageTools.Filtering.NearestNeighborResizer());
        else  
            newImg = ExtendedImage.Resize(img, height, width, new ImageTools.Filtering.NearestNeighborResizer());


        //newImg = applyWaterMark(newImg);
        //var s = new MemoryStream();
        var s = newImg.ToStreamByExtension(extension);
        return ReadFully(s); 
    }
public static byte[]resize(字符串扩展名、整型宽度、整型高度、整型方向)
{
//AddDecoder();
//AddDecoder();
AddDecoder();
//AddDecoder();
var newImg=newextendedImage();
如果(方向==0)
newImg=ExtendedImage.Resize(img,width,height,new-ImageTools.Filtering.nearestnearresizer());
其他的
newImg=ExtendedImage.Resize(img,height,width,new-ImageTools.Filtering.nearestnearresizer());
//newImg=applyWaterMark(newImg);
//var s=新内存流();
var s=新的img.ToStreamByExtension(扩展);
立即返回;
}
已解决

var e = new ImageTools.IO.Jpeg.JpegEncoder();
var s = new MemoryStream(); e.Quality = 90;
e.Encode(newImg,s);
 //var s = newImg.ToStream();
 return s.GetBuffer(); 

ImageTools用于jpeg编码的默认质量为100%。如果以该质量保存绘图程序中的文件,还会有很大的差异吗?“正常”尺寸是多少?另外,我认为AddDecoder调用应该在静态构造函数中,所以它们只被添加一次,而不是每次调用方法时都被调用。已解决!!var e=new-ImageTools.IO.Jpeg.JpegEncoder();var s=新内存流();e、 质量=90;e、 编码(newImg,s)//var s=newImg.ToStream();返回s.GetBuffer();请将您的解决方案作为此问题的答案。