我正在为ASP.Net/Javascript中的网站开发一个相当复杂的图像上传功能,其中一个WYSIWYG界面基于图像预览,所有这些都是在用户点击上传之前完成的。但是我遇到了一个根本问题:在他们开始转换图像之前,我真的不知道用户看到了什么。
用于创建预览客户端的Javascript基本上就是这个jQuery位
$('#inputPhotoUploader').change(function () {
var image = this.files[0];
var urlCreator = window.URL || window.webkitURL;
imageClientURL = urlCreator.createObjectURL(image);
var previewImage = document.createElement("img");
previewImage.src = imageClientURL;
$('#previewContainer').empty();
$('#previewContainer').append(previewImage);
});
这将根据#inputPhotoUploader中选择的文件在#previewContainer div中创建一个图像,而无需用户实际上传任何内容。大。
问题是,该文件通常包含有关旋转的Exif数据。浏览器可能会根据此数据自动旋转预览图像(至少在我的iPhone上会这样做)。它可能不会像我测试的每个桌面浏览器一样。
最终用户点击上传,我得到原始文件,Exif数据和所有。但我不知道它是如何显示给用户的。也许他们的浏览器忽略了Exif数据并显示了“不正确”旋转的图像,但用户希望它看起来完全一样,这就是我的软件应该如何显示它。或许这是一个快速拍摄的iPhone,Safari自动旋转它,用户希望它以这种方式显示给其他人,因为这是预览显示的。
创建预览后,我做了一些其他奇特的图像转换,但这个基本问题仍然存在,浏览器显示了什么?现在我看到它的方式我需要确定如果浏览器自动旋转预览,或者以某种方式确保没有浏览器。我只能用丑陋的用户代理来找到做前者的方法。
有更好的方法吗?