Samoy/image_save

iOS端图片保存异常

Closed this issue · 8 comments

一张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

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

Samoy commented

一张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()方法

一张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
  • 保存网络图片数据参考example
  • 保存本地assets图片参考以下代码,我本地测试没有问题
//获取图片数据
var data = await rootBundle.load("images/test.png");
Uint8List imageData = Uint8List.fromList(data.buffer.asUint8List());
//保存图片
ImageSave.saveImage(imageData, "png", albumName: "test")
Samoy commented

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

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

感谢,3.1.1可以了

我今天也遇到了同样的问题,我的图片是通过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');