将图片保存到本地相册

点击按钮,将self.imageView上面的image内容保存到本地相册,并指定判断保存成功与否的方法 imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:

- (IBAction)saveImageToAlbum:(id)sender {
    
UIImageWriteToSavedPhotosAlbum(self.imageView.imageself@selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);
}

// 实现imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:方法

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
    
NSString *message;
    
if (!error) {
        message = 
@"成功保存到相册";
    }
else
    {
        message = [error 
description];
    }
    
NSLog(@"message is %@",message);
}


好的,下面是一个简单的实现,将图片保存到本地相册和分享到QQ: ```dart import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:path_provider/path_provider.dart'; import 'package:image_gallery_saver/image_gallery_saver.dart'; import 'package:flutter_qq_share/flutter_qq_share.dart'; class ImagePage extends StatefulWidget { @override _ImagePageState createState() => _ImagePageState(); } class _ImagePageState extends State<ImagePage> { Uint8List _imageBytes; @override void initState() { super.initState(); _loadImage(); } Future<void> _loadImage() async { String imagePath = "assets/images/test.jpg"; ByteData imageByteData = await rootBundle.load(imagePath); setState(() { _imageBytes = imageByteData.buffer.asUint8List(); }); } Future<void> _saveImage() async { try { // 获取应用程序目录 Directory appDocDir = await getApplicationDocumentsDirectory(); // 获取文件名 String fileName = "test.jpg"; // 组合路径 String filePath = "${appDocDir.path}/$fileName"; // 保存图片到本地 File file = File(filePath); await file.writeAsBytes(_imageBytes); // 保存图片相册 await ImageGallerySaver.saveImage(_imageBytes); ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text("图片保存相册"), )); } catch (e) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text("保存图片失败: $e"), )); } } Future<void> _shareImageToQQ() async { try { // 获取应用程序目录 Directory appDocDir = await getApplicationDocumentsDirectory(); // 获取文件名 String fileName = "test.jpg"; // 组合路径 String filePath = "${appDocDir.path}/$fileName"; // 保存图片到本地 File file = File(filePath); await file.writeAsBytes(_imageBytes); // 分享图片到QQ await FlutterQQShare.shareImageToQQ(filePath); } catch (e) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text("分享图片失败: $e"), )); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("图片"), ), body: Center( child: _imageBytes != null ? GestureDetector( onTap: () { showModalBottomSheet( context: context, builder: (BuildContext context) { return Container( height: 120, child: Column( children: [ ListTile( leading: Icon(Icons.save), title: Text("保存相册"), onTap: () { Navigator.of(context).pop(); _saveImage(); }, ), ListTile( leading: Icon(Icons.share), title: Text("分享到QQ"), onTap: () { Navigator.of(context).pop(); _shareImageToQQ(); }, ), ], ), ); }, ); }, child: Image.memory(_imageBytes), ) : CircularProgressIndicator(), ), ); } } ``` 这个页面加载了一个本地图片,并在图片上添加了一个手势识别器,当用户点击图片时,会弹出一个底部菜单,用户可以选择保存相册或分享到QQ。当用户选择保存相册时,会将图片保存到本地保存相册中,当用户选择分享到QQ时,会将图片保存到本地并分享到QQ。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值