我用下面的程序更改图片文件大小,运行至红字部分出错,请大侠看看是怎么回事,谢谢 //本过程改变图片的实际尺寸
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[]".您是要调用方法吗?
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[]".您是要调用方法吗?
return m.GetBuffer;
byte[] imagedata=null;
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif );
imagedata=ms.GetBuffer ();
通过图片实现缩略图参考
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调用时出错