[flutter] 플러터에서의 사진 및 비디오 처리 방법

플러터는 다양한 사진 및 비디오 처리 기능을 제공하여 멋진 멀티미디어 애플리케이션을 빌드할 수 있게 해줍니다. 이번 포스트에서는 사진 촬영, 갤러리에서 사진 불러오기, 비디오 재생과 같은 기능에 대해 알아보겠습니다.

  1. 사진 촬영
  2. 갤러리에서 사진 불러오기
  3. 비디오 재생

사진 촬영

플러터에서 사진 촬영을 위해 camera 패키지를 사용할 수 있습니다. 다음은 간단한 예제 코드입니다.

import 'package:camera/camera.dart';

List<CameraDescription> cameras;

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  cameras = await availableCameras();
  runApp(CameraApp());
}

class CameraApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: CameraScreen(),
    );
  }
}

class CameraScreen extends StatefulWidget {
  @override
  _CameraScreenState createState() => _CameraScreenState();
}

class _CameraScreenState extends State<CameraScreen> {
  CameraController _controller;

  @override
  void initState() {
    super.initState();
    _controller = CameraController(cameras[0], ResolutionPreset.medium);
    _controller.initialize().then((_) {
      if (!mounted) {
        return;
      }
      setState(() {});
    });
  }

  @override
  void dispose() {
    _controller?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    if (!_controller.value.isInitialized) {
      return Container();
    }
    return AspectRatio(
      aspectRatio: _controller.value.aspectRatio,
      child: CameraPreview(_controller),
    );
  }
}

출처: Flutter - Camera plugin


갤러리에서 사진 불러오기

사용자가 갤러리에서 사진을 선택할 수 있도록 하는 기능을 구현하는 것은 image_picker 패키지를 사용하여 간단히 할 수 있습니다. 이를 위한 예제 코드는 아래와 같습니다.

import 'package:image_picker/image_picker.dart';

final picker = ImagePicker();

// 갤러리에서 사진을 불러오는 함수
Future<void> pickImageFromGallery() async {
  final pickedFile = await picker.getImage(source: ImageSource.gallery);
  if (pickedFile != null) {
    File imageFile = File(pickedFile.path);
    // 선택한 사진을 이용하여 작업을 수행
  }
}

출처: Flutter - Image picker plugin


비디오 재생

플러터에서 비디오를 재생하기 위해서는 video_player 패키지를 사용할 수 있습니다. 아래는 간단한 비디오 재생 예제 코드입니다.

import 'package:video_player/video_player.dart';

class VideoPlayerScreen extends StatefulWidget {
  @override
  _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.asset("assets/sample_video.mp4")
      ..initialize().then((_) {
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    if (_controller.value.initialized) {
      return AspectRatio(
        aspectRatio: _controller.value.aspectRatio,
        child: VideoPlayer(_controller),
      );
    } else {
      return Center(child: CircularProgressIndicator());
    }
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}

출처: Flutter - Video player plugin


사진 및 비디오 처리는 플러터를 활용한 멀티미디어 애플리케이션 구축 시 중요한 부분입니다. 위의 예제 코드 및 패키지를 활용하여 멋진 앱을 만들어보세요!