Samoy / image_save

Save image to album or sandbox
https://pub.dev/packages/image_save
MIT License
23 stars 27 forks source link

iOS端图片保存异常 #7

Closed xiaozhizhong closed 4 years ago

xiaozhizhong commented 4 years ago

一张png的图片,安卓上保存正常,但是iOS端(系统版本 13.5)抛出异常 PlatformException(-1, Error Domain=PHPhotosErrorDomain Code=-1 "(null)", null) 搜索了一下,可能和图片格式有关https://stackoverflow.com/questions/28348450/phphotolibrary-error-while-saving-image-at-url 但是我使用saveImage方法时,尝试过保存不同的格式“png”“jpg”都一样出错。而saveImageToSandbox不报异常,但是保存后在相册里找不到该图片。

Flutter 1.17.2

Samoy commented 4 years ago

我这边没有重现,能否将你的图片发送给我测试一下

Samoy commented 4 years ago

一张png的图片,安卓上保存正常,但是iOS端(系统版本 13.5)抛出异常 PlatformException(-1, Error Domain=PHPhotosErrorDomain Code=-1 "(null)", null)

搜索了一下,可能和图片格式有关https://stackoverflow.com/questions/28348450/phphotolibrary-error-while-saving-image-at-url 但是我使用saveImage方法时,尝试过保存不同的格式“png”“jpg”都一样出错。而saveImageToSandbox不报异常,但是保存后在相册里找不到该图片。 Flutter 1.17.2

保存到沙盒,只会在该应用目录下,因此在相册中是找不到的,后续我会添加getImagesFromSandBox()方法

xiaozhizhong commented 4 years ago

一张png的图片,安卓上保存正常,但是iOS端(系统版本 13.5)抛出异常 PlatformException(-1, Error Domain=PHPhotosErrorDomain Code=-1 "(null)", null)

搜索了一下,可能和图片格式有关https://stackoverflow.com/questions/28348450/phphotolibrary-error-while-saving-image-at-url 但是我使用saveImage方法时,尝试过保存不同的格式“png”“jpg”都一样出错。而saveImageToSandbox不报异常,但是保存后在相册里找不到该图片。 Flutter 1.17.2

保存到沙盒,只会在该应用目录下,因此在相册中是找不到的,后续我会添加getImagesFromSandBox()方法

你好,图片已发邮件到samoy_young@163.com,请查收

Samoy commented 4 years ago
xiaozhizhong commented 4 years ago

你好,   我又测试了一次,并且按照你给的代码,结果还是一样的错误。   以下是我的代码: var picture = await rootBundle.load("assets/images/img_wechat_code.png"); Uint8List imageData = Uint8List.fromList(picture.buffer.asUint8List()); try { await ImageSave.saveImage(imageData, "png"); } catch (error) { print(error); }   打印的错误日志: flutter: PlatformException(-1, Error Domain=PHPhotosErrorDomain Code=-1 "(null)", null)   在安卓机上是没问题的,并且iOS同样的代码我使用 image_gallery_saver: ^1.2.2 这个库也能正常保存。   我的测试环境:Flutter 1.17.2  iphone6s真机(13.5)+ iphone 11 pro模拟器(13.5) ------------------ 原始邮件 ------------------ 发件人: "Samoy"<notifications@github.com>; 发送时间: 2020年6月1日(星期一) 晚上6:03 收件人: "Samoy/image_save"<image_save@noreply.github.com>; 抄送: "肖志忠"<97592100@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [Samoy/image_save] iOS端图片保存异常 (#7)

获取网络图片数据参考example

获取本地assets图片数据参考以下代码,我本地测试没有问题 //获取图片数据 var data = await rootBundle.load("images/test.png"); Uint8List imageData = Uint8List.fromList(data.buffer.asUint8List()); //保存图片 ImageSave.saveImageToSandbox(_data, "test.png")

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

Samoy commented 4 years ago

请使用最新版本3.1.1再试一次

xiaozhizhong commented 4 years ago

请使用最新版本3.1.1再试一次

感谢,3.1.1可以了

wenxiangjiang commented 4 years ago

我今天也遇到了同样的问题,我的图片是通过canvas中获取到的,通过作者提供的代码保存图片报错。

解决办法是通过image转化为byteData的时候指定了格式化方式,具体如下:

ui.Image image = await recorder.endRecording().toImage(600, 600);
var byteData = await image.toByteData(format: ui.ImageByteFormat.png);
ImageSave.saveImage(byteData.buffer.asUint8List(), 'png');