我正在为 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 自动旋转它,用户希望它以这种方式显示给其他人,因为这就是预览显示的内容。
创建预览后,我做了一些其他精美的图像转换,但这个基本问题仍然存在,浏览器显示了什么?现在我看到它的方式我需要确定浏览器是否自动旋转预览,或者以某种方式确保没有浏览器这样做。我只能想出办法来做前者,用丑陋的用户代理东西。
有没有更好的办法?