MVC图片上传 - 上传方向错误

时间:2016-03-13 21:00:21

标签: c# asp.net-mvc azure image-processing azure-storage-blobs

我是webforms的MVC新手,我正在尝试将图像上传到我的azure存储容器中。我已经根据需要上传和调整了图片,但是有些图片正在以错误的方向上传,例如它们是以横向而非肖像上传的。

我用谷歌搜索了这个,但似乎找不到其他人有这个问题。

我必须上传的代码如下......

提前致谢

        string accountName = "xxxxxxxxxxx";
        string accountKey = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyy";

        try
        {
            if (file != null)
            {
                StorageCredentials creds = new StorageCredentials(accountName, accountKey);
                CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);

                CloudBlobClient client = account.CreateCloudBlobClient();

                CloudBlobContainer sampleContainer = client.GetContainerReference("uploadedimages");
                sampleContainer.CreateIfNotExists();

                CloudBlockBlob blob = sampleContainer.GetBlockBlobReference(file.FileName);

                using (Stream file1 = file.InputStream)
                {
                    WebImage img = new WebImage(file.InputStream);
                    if (img.Width > 300)
                        img.Resize(300, 300);

                    byte[] bytes = img.GetBytes();

                    Stream stream = new MemoryStream(bytes);
                    blob.UploadFromStream(stream);
                }

                string userIdValue = getUserId();
                if (ModelState.IsValid)
                {
                    YourDayEntities6 context = new YourDayEntities6();
                    context.CreateDayByDate(model.DayDate, blob.Uri.ToString(), model.DayDesc, userIdValue);
                }
            }
        }
        catch (Exception e)
        {
            throw new Exception(string.Format("Error{0}", e.Message));
        }

        return RedirectToAction("GetAllDaysByDate");

1 个答案:

答案 0 :(得分:0)

我见过这个问题的大部分时间都不是由于存储,Azure存储会保存文件字节。

图像方向是EXIF information的一部分,它包含在文件二进制文件中。

如果您使用客户端(JS)库管理上传,您可以在其文档中查找并查看是否可能删除或修改EXIF信息,某些库甚至有更改它的方法。

手机拍摄的图像存在一些问题,报告错误的EXIF信息(横向而不是纵向或反面),为了解决此问题,您需要在上传之前处理EXIF信息。可能解决此问题的一些插件是blueimp Javascript Load Imageng-file-upload for AngularJS