Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- setstate
- Camera
- permission
- Navigator
- Firebase
- consumer
- platformexception
- swift 문법
- ListView.builder
- divider
- changenotifierprovider
- Snapshot
- controller
- multiprovider
- user
- datetime
- 문법
- changenotifier
- globalkey
- runTransaction
- signout
- provider
- switch
- Swift
- snackbar
- reference
- borderRadius
- Stream
- enum
- transform
Archives
- Today
- Total
코딩하는 제리
[Flutter/Project](Instagram Clone) 이미지 리사이징, Isolate 본문
Flutter/Project_InstaClone(완)
[Flutter/Project](Instagram Clone) 이미지 리사이징, Isolate
JerryCho 2021. 2. 23. 18:11puzzleleaf.tistory.com/216?category=820503
[Dart] 비동기 프로그래밍 (Isolates, Event Loops, Future)
Flutter 유튜브 채널에 친절하게도 한글 자막이 달려있는 영상이 있다. 그중에서도 비동기 프로그래밍에 관한 영상이다. https://www.youtube.com/watch?v=vl_AaCgudcY Isolates 모든 Dart 코드가 실행되는 곳으로.
puzzleleaf.tistory.com
소스코드 및 pubspec.yaml
// repo/helper/image_helper.dart
import 'dart:io';
// image.dart 임포트.
import 'package:image/image.dart';
// 메서드를 실행하는 동안 앱의 멈춤 발생.
// 이를 해결하기 위해 isolate 사용.(image_network_repository.dart)
File getResizedImage(File originImage) {
// 바이트로 읽어와 Image 오브젝트로 변경.
Image image = decodeImage(originImage.readAsBytesSync());
// 정사각형 300 사이즈로 변경
Image reSizedImage = copyResizeCropSquare(image, 300);
// 파일 확장자 변경 후 퀄리티 낮춤.
File resizedFile =
File(originImage.path.substring(0, originImage.path.length - 3) + "jpg");
resizedFile.writeAsBytesSync(encodeJpg(reSizedImage, quality: 50));
return resizedFile;
}
// repo/image_network_repository.dart
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter_project_IJ/repo/helper/image_helper.dart';
// isolate
class ImageNetworkRepository {
Future<void> uploadImageNCreateNewPost(File originImage) async {
try {
// 메소드명만 입력.
final File resized = await compute(getResizedImage, originImage);
originImage
.length()
.then((value) => print('original image size: $value'));
resized.length().then((value) => print('resized image size: $value'));
} catch (e) {}
}
}
ImageNetworkRepository imageNetworkRepository = ImageNetworkRepository();
'Flutter > Project_InstaClone(완)' 카테고리의 다른 글
[Flutter/Project](Instagram Clone) Firebase Storage Image Upload (0) | 2021.02.25 |
---|---|
[Flutter/Project](Instagram Clone) 팝업 인디케이터 (0) | 2021.02.23 |
[Flutter/Project](Instagram Clone) 포스트 작성 레이아웃3 (0) | 2021.02.23 |
[Flutter/Project](Instagram Clone) 포스트 작성 레이아웃2 가로 스크롤 아이콘 (0) | 2021.02.18 |
[Flutter/Project](Instagram Clone) 포스트 작성 레이아웃1 (0) | 2021.02.17 |
Comments