v0.5.2
flutter_exif_rotation
일부 장치에서 가로 방향으로 촬영한 사진의 방향을 수정하는 Flutter 플러그인입니다.
96좋아요 3.3만30일 다운로드150Pub 점수
AndroidiOS
NGhebreial/flutter_exif_rotation open-source repository details.
{"sdk":"flutter"}{"sdk":"flutter"}아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
Flutter plugin that fixes the picture orientation for some devices. In some devices the exif data shows picture in landscape mode when they're actually in portrait. This plugin fixes the orientation for pictures taken with those devices.
Every version of Android is supported. iOS implemented by @Bhagatcliffex and currently supported
Add this in your AndroidManifest.xml (you don't need these permissions in case when you manipulate files from internal storage only (file are stored inside the app's directory ( /data/data/{your package}/ )) )
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_exif_rotation/flutter_exif_rotation.dart';
import 'package:image_picker/image_picker.dart';
void main() => runApp(MyApp());
/// The stateful widget
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
/// The class with the scaffold
class _MyAppState extends State<MyApp> {
File _image;
final picker = ImagePicker();
Future getImage() async {
final image = await picker.getImage(source: ImageSource.gallery);
if (image != null && image.path != null) {
File rotatedImage =
await FlutterExifRotation.rotateImage(path: image.path);
if (image != null) {
setState(() {
_image = rotatedImage;
});
}
}
}
Future getImageAndSave() async {
final image = await picker.getImage(source: ImageSource.gallery);
if (image != null && image.path != null) {
File rotatedImage =
await FlutterExifRotation.rotateAndSaveImage(path: image.path);
if (image != null) {
setState(() {
_image = rotatedImage;
});
}
}
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Exif flutter rotation image example app'),
),
body: new Center(
child: _image == null
? new Text('No image selected.')
: new Image.file(_image),
),
persistentFooterButtons: <Widget>[
new FloatingActionButton(
onPressed: getImageAndSave,
tooltip: 'Pick Image and save',
child: new Icon(Icons.save),
),
new FloatingActionButton(
onPressed: getImage,
tooltip: 'Pick Image without saving',
child: new Icon(Icons.add),
),
],
),
);
}
}