【发布时间】:2014-02-15 12:33:40
【问题描述】:
我的任务是将两个图像发布到服务器,将它们组合(一个在另一个之上),然后将生成的图像保存到 Azure 存储。我有有效的代码,但它看起来......错误。 有没有更丑陋的方法来做到这一点?我讨厌看到所有那些“使用”语句和长缩进。
此代码将签名图像和姓名缩写图像组合在一起,然后将结果保存到 Azure 存储。
代码:
string initialscontainerPath = "signatures/initailsdata.png";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("StorageConnection"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(Request.Url.Host.ToLower().Replace(".", "-"));
CloudBlockBlob blockBlob = container.GetBlockBlobReference(initialscontainerPath);
blockBlob.Properties.ContentType = "image/png";
byte[] initialsbytes = Convert.FromBase64String(initialsData);
byte[] signaturebytes = Convert.FromBase64String(signatureData);
using (System.IO.MemoryStream msinitials = new System.IO.MemoryStream(initialsbytes))
{
using (System.IO.MemoryStream mssignature = new System.IO.MemoryStream(signaturebytes))
{
using (System.Drawing.Image bminitials = new System.Drawing.Bitmap(msinitials))
{
using (System.Drawing.Image bmsignature = new System.Drawing.Bitmap(mssignature))
{
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmsignature))
{
g.DrawImage(bminitials, 0, 0);
using (System.IO.MemoryStream savestream = new System.IO.MemoryStream())
{
bmsignature.Save(savestream, System.Drawing.Imaging.ImageFormat.Png);
using (System.IO.MemoryStream uploadstream = new System.IO.MemoryStream(savestream.ToArray()))
{
blockBlob.UploadFromStream(uploadstream);
}
}
}
}
}
}
}
【问题讨论】:
-
这个问题属于codereview.stackexchange.com
标签: c# image memorystream