2017-10-17 9 views
1

안녕하세요 저는 이미지 라이브러리를 사용하여 갤러리에서 가져온 이미지 크기를 줄이려고합니다. 이파일을 열 수 없습니다, 경로 = 'file : /// path'(OS 오류 : 해당 파일 또는 디렉토리, errno = 2)

E/flutter (13796): [ERROR:lib/tonic/logging/dart_error.cc(16)] Unhandled exception: 
E/flutter (13796): FileSystemException: Cannot open file, path = 'file:///storage/emulated/0/WhatsApp/Media/WhatsApp%20Images/IMG-20171016-WA0020.jpg' (OS Error: No such file or directory, errno = 2) 
E/flutter (13796): #0  _File.throwIfError (file_impl.dart:618) 
E/flutter (13796): #1  _File.openSync (file_impl.dart:473) 
E/flutter (13796): #2  _File.readAsBytesSync (file_impl.dart:533) 
E/flutter (13796): #3  _AddNewUserState.qqq (/data/data/com.prayuta.chitfunds/cache/chitfundsUNFPRG/chitfunds/lib/users.dart:420:97) 
E/flutter (13796): <asynchronous suspension> 
E/flutter (13796): #4  _AddNewUserState.build.<anonymous closure> (/data/data/com.prayuta.chitfunds/cache/chitfundsUNFPRG/chitfunds/lib/users.dart:686:19) 
E/flutter (13796): #5  GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) 
E/flutter (13796): #6  TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:149:9) 
E/flutter (13796): #7  TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:119:7) 
E/flutter (13796): #8  GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27) 
E/flutter (13796): #9   BindingBase&SchedulerBinding&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:147:20) 
E/flutter (13796): #10  BindingBase&SchedulerBinding&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22) 
E/flutter (13796): #11  BindingBase&SchedulerBinding&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7) 
E/flutter (13796): #12  BindingBase&SchedulerBinding&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7) 
E/flutter (13796): #13  BindingBase&SchedulerBinding&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7) 
E/flutter (13796): #14  _invoke1 (file:///b/build/slave/Linux_Engine/build/src/flutter/lib/ui/hooks.dart:100) 
    E/flutter (13796): #15  _dispatchPointerDataPacket (file:///b/build/slave/Linux_Engine/build/src/flutter/lib/ui/hooks.dart:58) 

같은 향 오류가 하나 도움과 내 코드 문제는 이미지 피커 또는 작은 크기뿐만로 변환하여 파일을 읽는되지 않습니다

import 'package:image/image.dart' as convertinglib; 
File imageFile = await ImagePicker.pickImage(); 
convertinglib.Image image = convertinglib.decodeImage(new Io.File(imageFile.uri.toString()).readAsBytesSync()); 
convertinglib.Image thumbnail = convertinglib.copyResize(image, 120); 
+0

어떤 패키지 않습니다의

new Io.File.fromUri(imageFile.uri) 

: /와 같은 이미지를 볼 image.dart? 이미지 선택기가 잘 작동하는 것 같습니다. –

+0

작업 클래스의 최소 예를 게시 할 수 있습니까? 오류가 발생합니까? –

+0

imageuploader() async { File imageFile = ImagePicker.pickImage()를 대기 중입니다. convertinglib.Image image = convertinglib.decodeImage (새로운 Io.File (imageFile.uri.toString()). readAsBytesSync()); convertinglib.Image thumbnail = convertinglib.copyResize (image, 120); DateTime now = new DateTime.now(); var datestamp = new DateFormat ("yyyyMMdd'T'HHmmss"); 문자열 currentdate = datestamp.format (당장); setState (() { progressBarStatus = true; }); –

답변

0

처럼 보일 수 있습니다 파일 시스템에 파일을 쓰는 것. 파일 크기를 조정 한 후 파일을 파일 시스템에 쓰는 dart image package의 예제 코드를 사용했습니다. 이 형식은 스마트 폰에서는 불가능합니다.

실제로 오류가 발생하지 않았다 게시 만이 줄했던 코드 :

new Io.File(imageFile.uri.toString()) 
    ..writeAsBytesSync(convertingLib.encodePng(thumbnail)) 

이 가진 문제는 imagePicker 이미지의 실제 URI를 숨기고 있다는 것입니다. 다음과 같은 경로를 제공합니다 : .../tmp/image_picker_1547A964-791E-426F-A682-33D3AFA995BA-18295-0003861F9255294A.jpg 새 축소판을 저장하는 데 사용할 수 없습니다.

먼저 파일을 저장하지 않거나 실제로 존재하는 위치에 저장하지 않을 수 있습니다 (예 : path_provider plugin을 그 용도로 사용할 수 있음).

+0

그런 다음 문제를 해결하는 방법 또는 다른 방법이 있습니다. –

+0

내 대답 –

+0

을 편집했지만 파일로 반환하는 방법은 –

0

이미지 URI를 문자열로 전달하는 것이 문제라고 생각합니다. 파일 URI를 전달할 수있는 fromUri 생성자가 있습니다.

사용해보십시오 대신

new Io.File(imageFile.uri.toString()) 
+0

입니다. image_picker가 앱의 실제 URL을 숨기는 것입니다. 자세한 내용은 내 대답을 참조하십시오. –

+0

하지만 firebase 저장소를 업로드하는 파일로 반환 유형을 지정하고 싶습니다. –