2011-01-08 137 views
2

我正在使用ASP.NET文件上传控件,然后调整图像大小并将新图像存储在新的位图中。这里是我到目前为止的代码:帮助从调整大小的图像获取数据

protected void ResizeImage() 
    { 
     Bitmap originalBMP = new Bitmap(FileUpload1.FileContent); 
     //Calculate new image dimensions 
     int origWidth = originalBMP.Width; 
     int origHeight = originalBMP.Height; 
     int sngRatio = origWidth/origHeight; 
     int newWidth = 100; 
     int newHeight = newWidth/sngRatio; 
     Bitmap newBMP = new Bitmap(originalBMP, newWidth, newHeight); 
} 

我直接上传到Amazon S3,我需要一些数据传递给它的上传方法。我如何得到我的新位图,我一直在使用与文件上传?:

FileUpload1.FileBytes 
FileUpload1.FileBytes.Length 

我需要我的新的位图保存到一个流,所以我可以得到一个字节数组以下信息?

+0

使用位图构造函数会给你带来大量工件的质量极差的图像。另外,我希望你在两个Bitmap实例中都使用using(){}子句,因为原来的代码会使服务器在20-100次请求时崩溃。我建议你使用[一个设计用于执行服务器安全图像大小调整的库](http://imageresizing.net),它比避免[自己的29个陷阱]更容易(http://nathanaeljones.com/163/ 20图像调整大小-陷阱/)。 – 2012-03-29 16:36:05

回答

2

您需要创建一个MemoryStream并致电Bitmap.Save。您可以拨打MemoryStream.ToArray()

+0

完美。谢谢。 – 2011-01-10 04:18:35