image_pickers支持本地图片多选,本地视频多选,支持将网络图片保存到相册,支持截图保存到相册,支持将网络视频保存到相册,支持预览视频和预览图片功能,支持主题颜色设置。
近来和安卓小伙伴更新了flutter的控件image_pickers
安卓部分解决了已知的bug,IOS部分 将以前引用的 https://github.com/longitachi/ZLPhotoBrowser 的oc版本更新为swift版本,新的版本已经优化了之前oc版本的已知缺陷。不得不说swift版本比oc版本的ZLPhotoBrowser功能更加强大。在此膜拜一下大神。我们只是踩在巨人肩膀上的搬用工。
如果用的是之前OC版本进行更新,若运行失败请删除以前的-l"ZLPhotoBrowser-objc" 位置在targer->build setting ->linking->other linker flags
附image_pickers地址https://pub.flutter-io.cn/packages/image_pickers
具体方法如下:
///选择多张图片 Select multiple images
Future<void> selectImages() async {
List<Media> _listImagePaths = await ImagePickers.pickerPaths(
galleryMode: GalleryMode.image,
selectCount: 2,
showGif: false,
showCamera: true,
compressSize: 500,
uiConfig: UIConfig(uiThemeColor: Color(0xffff0f50)),
cropConfig: CropConfig(enableCrop: false, width: 2, height: 1));
}
/// 或者 or
ImagePickers.pickerPaths().then((List medias){
/// medias 照片路径信息 Photo path information
});
///直接打开相机拍摄图片 Open the camera directly to take a picture
ImagePickers.openCamera().then((Media? media){
/// media 包含照片路径信息 Include photo path information
/// 未拍照返回 media = null
if(media != null){
}
});
///直接打开相机拍摄视频 Open the camera directly to shoot the video
ImagePickers.openCamera(cameraMimeType: CameraMimeType.video).then((media){
/// media 包含视频路径信息 Contains video path information
/// 未拍摄视频返回 media = null
if(media != null){
}
});
///预览图片 Preview picture
ImagePickers.previewImage(_listImagePaths[index].path);
///预览多张图片 Preview multiple pictures
ImagePickers.previewImagesByMedia(_listImagePaths,index);
///预览多张图片 Preview multiple pictures
ImagePickers.previewImages(paths,index);
///预览视频 Preview video
ImagePickers.previewVideo(_listVideoPaths[index].path);
///保存图片到图库 Save image to gallery
ImagePickers.saveImageToGallery("http://i1.sinaimg.cn/ent/d/2008-06-04/U105P28T3D2048907F326DT20080604225106.jpg");
/// 保存截图图片 ByteData 到图库 Save screenshot image ByteData to gallery
RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
ui.Image image = await boundary.toImage(pixelRatio: 3);
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List data = byteData.buffer.asUint8List();
String dataImagePath = await ImagePickers.saveByteDataImageToGallery(data,);
///保存视频到图库 Save video to gallery
ImagePickers.saveVideoToGallery("http://xxxx/xx/xx.mp4");
网友评论