问题描述
|
我有两个图像clear.jpg和thumbclear.jpg,第二个是缩略图
使用以下代码从第一个创建:
我尚未进行任何调整
Bitmap bitmap = new Bitmap(File.InputStream);
MemoryStream st = new MemoryStream();
try
{
bitmap.Save(st,ImageFormat.Png);
return st;
}
finally
{
bitmap.dispose();
}
所以我将两个图片都上传到Blob,然后获取它们的URI并将其复制/粘贴到
浏览器。
第一个
http://127.0.0.1:10000/devstoreaccount1/media/e1a987d1-c731-4e26-9e6c-d7a63b62f661/clear.png
工作正常,
但第二个http://127.0.0.1:10000/devstoreaccount1/media/b7ba6428-9db4-4282-8991-7a8198e7126f/thumbclear.png
给我以下错误:
无法显示图像“ http://...thumbclear.png \”,因为它包含错误。
所以我认为这与要传输的位图有关。
任何帮助将不胜感激。
**编辑
我用来保存Blob的代码
public static CloudBlob SaveFiletoBlob(MemoryStream stream,string blobContainerName,string filename,string extension,string contentType,int fileSize)
{
if (stream != null)
{
CloudBlobContainer _BlobContainer = SessionHelper.GetBlobContainer(blobContainerName);
var permissions = new BlobContainerPermissions();
permissions.PublicAccess = BlobContainerPublicAccesstype.Container;
_BlobContainer.SetPermissions(permissions);
Guid blobid = Guid.NewGuid();
var blob = _BlobContainer.GetBlobReference(blobid.ToString() + \"/\" + filename);
blob.UploadFromStream(stream);
blob.Metadata[\"FileName\"] = filename;
blob.Metadata[\"Extension\"] = extension;
blob.Metadata[\"FileSize\"] = fileSize.ToString();
blob.SetMetadata();
blob.Properties.ContentType = contentType;
blob.SetProperties();
return blob;
}
else
return null;
}
解决方法
解决方案是在上传到Blob之前将流位置设置为零。
stream.Position = 0;
blob.UploadFromStream(stream);
,对于第一个样本:
Bitmap bitmap = new Bitmap(File.InputStream);
MemoryStream st = new MemoryStream();
try
{
bitmap.Save(st,ImageFormat.Png);
//worked for me
Response.ContentType = \"image/png\";
st.WriteTo(Response.OutputStream);
//--
}
finally
{
bitmap.Dispose();
}
而且,我今天发现
Function Index() As FileContentResult
Dim Resim = New WebClient().DownloadData(\"https://dosyalar.blob.core.windows.net/dosya/kartalisveris.gif\")
Return New FileContentResult(Resim,\"image/png\") \'* With {.FileDownloadName = \"Höbölö\"}
End Function