【发布时间】:2018-12-27 02:19:09
【问题描述】:
我正在使用 react-firebase-file-uploader 将头像上传到 Firebase 存储。但是,任何时候我上传肖像方向的图像(特别是在 Android 和 IOS 设备上拍摄的图像 - 它们的元数据中往往有 OrientationRotate 90 CW)图像是旋转 90 度。
我之前已经阅读过这方面的内容,并且我相信这些智能手机拍摄的图像始终是横向,但方向是存储在EXIF 元中的。如有错误请指正?
以下是使用 react-firebase-file-uploader 上传图像的组件示例 - 我知道这不是这个包的问题,这个问题的解决方案可能适用跨许多应用程序。
那么,我需要做什么来读取 EXIF 方向,更改旋转(如果需要,或者我需要通过文件上传传递元数据?)并且仍然继续上传?
class ProfilePage extends Component {
state = {
avatar: "",
isUploading: false,
progress: 0,
avatarURL: ""
};
handleProgress = progress => this.setState({ progress });
handleUploadError = error => {
this.setState({ isUploading: false });
console.error(error);
};
handleUploadSuccess = filename => {
this.setState({ avatar: filename, progress: 100, isUploading: false });
firebase
.storage()
.ref("images")
.child(filename)
.getDownloadURL()
.then(url => this.setState({ avatarURL: url }));
};
render() {
return (
<div>
<form>
{this.state.isUploading && <p>Progress: {this.state.progress}</p>}
{this.state.avatarURL && <img src={this.state.avatarURL} />}
<FileUploader
accept="image/*"
name="avatar"
randomizeFilename
storageRef={firebase.storage().ref("images")}
onUploadStart={this.handleUploadStart}
onUploadError={this.handleUploadError}
onUploadSuccess={this.handleUploadSuccess}
onProgress={this.handleProgress}
/>
</form>
</div>
);
}
}
export default ProfilePage;
【问题讨论】:
-
谢谢。我试图避免使用 jQuery。你知道任何提供解决方案的 React 库吗?
-
不幸的是我不使用反应。
标签: javascript reactjs orientation exif