Flutter image_picker возвращает разные имена файлов при каждом выборе из галереи ⇐ IOS
-
Гость
Flutter image_picker возвращает разные имена файлов при каждом выборе из галереи
В настоящее время я пытаюсь загрузить изображения из Галереи в свое приложение и сохранить их, если еще не там, в подпапке Галереи. На Android все работает нормально, при проверке имени файла возвращается image_picker. В iOS возвращаемое имя всегда другое ('image_pickerXXXXX.jpg').
После этого я попытался хэшировать само изображение. Опять же, на Android я всегда получаю одно и то же значение, но на iOS значение хеш-функции всегда разное.
Похоже, iOS меняет не только имя файла, но и значение байта. Если я что-то упустил, буду рад советам.
Мой вопрос: знает ли кто-нибудь, связано ли это с флаттером, где такое поведение является результатом реализации image_picker или это поведение по умолчанию, принудительно применяет Галерея iOS.
Future PickAPhoto() async { // Здесь я получаю исходное имя файла для Android, но что-то вроде «image_pickerXXXXX.jpg» для iOS. X-файл? selectedFile = ждут Picker.pickImage(источник: ImageSource.gallery); если (pickedFile != ноль) { Файл файл = Файл (выбранный файл.путь); List imageBytes = ждут file.readAsBytes(); // На Android это одно и то же для оригинальных изображений или копий, на iOS оно всегда другое. Дайджест-дайджест = sha256.convert(imageBytes); Logger().i(дайджест); Файл originalFile = File(pickedFile.path); конечный каталог = originalFile.parent; Расширение строки = путь.расширение(исходныйфайл.путь); окончательный newPath = '${dir.path}/$digest$extension'; Файл переименован в File = ждут originalFile.rename(newPath); addImageToArray (переименованный файл); инспекция.изображения = '${inspection.images}${path.basename(renamedFile.path)},'; инспекция.isSynced = 0; Inspection.updateInspection(осмотр); дождитесь saveFileToGallery(renamedFile.path); } } Основная причина, по которой я спрашиваю, — определить, имеет ли смысл углубиться в API галереи iOS, чтобы написать плагин, который подойдет для моего варианта использования. Я думаю, если бы это было так просто или даже возможно, image_picker добавил бы опцию для получения исходных данных, но, возможно, кто-то здесь знает об этом больше.
Я протестировал свое приложение на Android и iOS. Я ожидал, что flutter image_picker вернет тот же файл или точную копию выбранного файла при использовании галереи в качестве источника. Разрешения вроде бы в порядке.
NSCameraUsageDescription Этому приложению требуется доступ к вашей камере, чтобы вы могли делать фотографии для проверок и записей. Фотографии можно хранить локально или в облаке для дальнейшего использования. NSPhotoLibraryUsageDescription Этому приложению требуется разрешение на сохранение фотографий в вашей библиотеке фотографий. Эта функция используется при сохранении фотографий ваших проверок и записей. Я нигде не использую микрофон, поэтому не добавлял это в разрешения. Возможно, мой вопрос является дубликатом этой ссылки:
Flutter image_picker не сохраняет исходное имя
Но, похоже, ответ не имеет к этому никакого отношения.
Большое спасибо за уделенное время.
В настоящее время я пытаюсь загрузить изображения из Галереи в свое приложение и сохранить их, если еще не там, в подпапке Галереи. На Android все работает нормально, при проверке имени файла возвращается image_picker. В iOS возвращаемое имя всегда другое ('image_pickerXXXXX.jpg').
После этого я попытался хэшировать само изображение. Опять же, на Android я всегда получаю одно и то же значение, но на iOS значение хеш-функции всегда разное.
Похоже, iOS меняет не только имя файла, но и значение байта. Если я что-то упустил, буду рад советам.
Мой вопрос: знает ли кто-нибудь, связано ли это с флаттером, где такое поведение является результатом реализации image_picker или это поведение по умолчанию, принудительно применяет Галерея iOS.
Future PickAPhoto() async { // Здесь я получаю исходное имя файла для Android, но что-то вроде «image_pickerXXXXX.jpg» для iOS. X-файл? selectedFile = ждут Picker.pickImage(источник: ImageSource.gallery); если (pickedFile != ноль) { Файл файл = Файл (выбранный файл.путь); List imageBytes = ждут file.readAsBytes(); // На Android это одно и то же для оригинальных изображений или копий, на iOS оно всегда другое. Дайджест-дайджест = sha256.convert(imageBytes); Logger().i(дайджест); Файл originalFile = File(pickedFile.path); конечный каталог = originalFile.parent; Расширение строки = путь.расширение(исходныйфайл.путь); окончательный newPath = '${dir.path}/$digest$extension'; Файл переименован в File = ждут originalFile.rename(newPath); addImageToArray (переименованный файл); инспекция.изображения = '${inspection.images}${path.basename(renamedFile.path)},'; инспекция.isSynced = 0; Inspection.updateInspection(осмотр); дождитесь saveFileToGallery(renamedFile.path); } } Основная причина, по которой я спрашиваю, — определить, имеет ли смысл углубиться в API галереи iOS, чтобы написать плагин, который подойдет для моего варианта использования. Я думаю, если бы это было так просто или даже возможно, image_picker добавил бы опцию для получения исходных данных, но, возможно, кто-то здесь знает об этом больше.
Я протестировал свое приложение на Android и iOS. Я ожидал, что flutter image_picker вернет тот же файл или точную копию выбранного файла при использовании галереи в качестве источника. Разрешения вроде бы в порядке.
NSCameraUsageDescription Этому приложению требуется доступ к вашей камере, чтобы вы могли делать фотографии для проверок и записей. Фотографии можно хранить локально или в облаке для дальнейшего использования. NSPhotoLibraryUsageDescription Этому приложению требуется разрешение на сохранение фотографий в вашей библиотеке фотографий. Эта функция используется при сохранении фотографий ваших проверок и записей. Я нигде не использую микрофон, поэтому не добавлял это в разрешения. Возможно, мой вопрос является дубликатом этой ссылки:
Flutter image_picker не сохраняет исходное имя
Но, похоже, ответ не имеет к этому никакого отношения.
Большое спасибо за уделенное время.
Мобильная версия