我用下面的程序更改图片文件大小,运行至红字部分出错,请大侠看看是怎么回事,谢谢 //本过程改变图片的实际尺寸
    private static byte[] ResizeImageFile(byte[] imageFile, int targetSize)
    {
        using (System.Drawing.Image oldImage = System.Drawing.Image.FromStream(new MemoryStream(imageFile)))
        {
            Size newSize = CalculateDimensions(oldImage.Size, targetSize);
            using (Bitmap newImage = new Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb))
            {
                using (Graphics canvas = Graphics.FromImage(newImage))
                {
                    canvas.SmoothingMode = SmoothingMode.AntiAlias;
                    canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    canvas.DrawImage(oldImage, new Rectangle(new Point(0, 0), newSize));
                    MemoryStream m = new MemoryStream();
                    newImage.Save(m, ImageFormat.Jpeg);
                    return m.GetBuffer;                }
            }
        }
    }    //本过程计算上传图片的实际尺寸
    private static Size CalculateDimensions(Size oldSize, int targetSize)
    {
        Size newSize = default(Size);
        if ((oldSize.Height > oldSize.Width))
        {
            newSize.Width = (int)(oldSize.Width * (float)(targetSize / (float)oldSize.Height));
            newSize.Height = targetSize;
        }
        else
        {
            newSize.Width = targetSize;
            newSize.Height = (int)(oldSize.Height * (float)(targetSize / (float)oldSize.Width));
        }
        return newSize;
    }       protected override string CheckUploadData(ref byte[] data)
    {  
if (fs.GetDirectorySize(fs.VirtualRoot) >= secset.MaxImageFolderSize * 1024)
            return "图像文件夹的大小超过限制: " + CuteEditor.Impl.FileStorage.FormatSize(secset.MaxImageFolderSize * 1024);
          
      
        System.Drawing.Image img;
        try
        {
            img = System.Drawing.Image.FromStream(new System.IO.MemoryStream(data));
            //img = ResizeImageFile(data, 200);
        }
        catch
        {
            return "图像格式不正确.";
        } return null;
    } 出错信息为:无法将方法数组"GetBuffer"转换为非委托类型"byte[]".您是要调用方法吗?

解决方案 »

  1.   

    出错信息是这句:
    return m.GetBuffer;
      

  2.   

    MemoryStream ms=new MemoryStream();
       byte[] imagedata=null;
       pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif );
       imagedata=ms.GetBuffer ();
    通过图片实现缩略图参考
      

  3.   

    调用的代码有误,应该是这样的
    protected override string CheckUploadData(ref byte[] data)
        {  
            if (fs.GetDirectorySize(fs.VirtualRoot) >= secset.MaxImageFolderSize * 1024)
                return "图像文件夹的大小超过限制: " + CuteEditor.Impl.FileStorage.FormatSize(secset.MaxImageFolderSize * 1024);
              
          
            System.Drawing.Image img;
            try
            {
                img = ResizeImageFile(data, 200);
            }
            catch
            {
                return "图像格式不正确.";
            } return null;
        }
    ResizeImageFile调用时出错