저장된 Image 불러오기

Flutter

목록 보기
8/12

image_picker

import 'package:image_picker/image_picker.dart';
import 'dart:io';

메인에 임포트 추가

IOS

  • IOS 의 경우 사진 사용할 경우 추가 작업이 필요하다.
  • android 의 경우는 추가 작업 X
    IOS/Runner/Info.plist
    파일에 추가 코드
<key>NSPhotoLibraryUsageDescription</key>
<string>사진첩좀 써도 됩니까</string>
<key>NSCameraUsageDescription</key>
<string>카메라좀 써도 됩니까</string>
<key>NSMicrophoneUsageDescription</key>
<string>마이크 권한좀 제발</string>

팝업 띄우기
권한 요청은 아님.

ImagePicker()

카메라 띄우는 코드

 var picker = ImagePicker();
 var image = await picker.pickImage(source:ImageSource.camera);

갤러리 띄우는 코드

 var picker = ImagePicker();
 var image = await picker.pickImage(source:ImageSource.gallery);

pickVideo(source:ImageSource.gallery);
pickVideo(source:ImageSource.camera);

  • 동영상 선택

pickMultiImage()

  • 여러장 고르는 코드

멀티의 경우

이런식으로 사용
userImage[0] = File(image.path);
File 함수가 기본적으로 하나씩 처리가 가능.

map으로 다 하나씩 매핑 가능
pickedImages.map((xfile) => File(xfile.path)).toList();

map 메서드를 사용하면 리스트의 각 요소를 변환하여 새로운 리스트를 생성할 수 있습니다. 이 경우, XFile 객체를 File 객체로 변환하는 작업을 리스트의 모든 요소에 대해 수행합니다.

if 사용하는 이유는 유저가 사진을 고르지 않을 수 도 있으므로 null 처리.

setState(() {
	userImage = File(image.path);
});

Image.file(userImage);

  • 파일 형태인 이미지를 보여주는 코드

이미지 사이즈 조정, Filter

  • Filter package 설치
  • photofilers
  • resizeToAvoidBottomInset는 Flutter의 Scaffold 위젯에서 사용되는 속성으로, 화면에 나타나는 키보드로 인해 레이아웃이 자동으로 조정되는 방식을 제어합니다.

Image resize

  • Image.file(
    _image!,
    width: 200.0,
    height: 200.0,
    fit: BoxFit.cover,
    ),
  • BoxFit 열거형(enum)을 사용하여 다양한 맞춤 옵션을 제공

BoxFit.fill:

  • 이미지의 종횡비를 무시하고, 컨테이너의 전체 공간을 채우도록 크기를 조정합니다.

BoxFit.contain:

  • 이미지의 종횡비를 유지하면서, 이미지가 컨테이너 내에 완전히 들어가도록 크기를 조정합니다.

BoxFit.cover:

  • 이미지의 종횡비를 유지하면서, 이미지가 컨테이너의 전체 공간을 채우도록 크기를 조정합니다.

BoxFit.fitWidth:

  • 이미지의 종횡비를 유지하면서, 컨테이너의 너비에 맞추어 크기를 조정합니다

BoxFit.fitHeight:

  • 이미지의 종횡비를 유지하면서, 컨테이너의 높이에 맞추어 크기를 조정합니다

BoxFit.scaleDown:

  • 이미지의 종횡비를 유지하면서, 원래 크기보다 클 경우에만 이미지를 축소합니다

BoxFit.none:

  • 이미지의 원래 크기를 유지합니다


image 파일의 형식에 따라서 if 문으로 어떻게 할지 Image.file or Image.network 등으로 처리

0개의 댓글