iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现图片预览与保存功能
  • 287
分享到

Android实现图片预览与保存功能

2024-04-02 19:04:59 287人浏览 独家记忆
摘要

目录前言引入插件总结前言 在App开发中,通常为了省流提高加载速度提升用户体验我们通常在列表中或新闻中的插图都是以缩略图压缩过的图片来进行展示,当用户点击图片时我们再去加载真正像素的

前言

在App开发中,通常为了省流提高加载速度提升用户体验我们通常在列表中或新闻中的插图都是以缩略图压缩过的图片来进行展示,当用户点击图片时我们再去加载真正像素的大图让用户预览,如果用户想保存并且可以保存到自己的相册中,那么在Flutter中如何实现这样的功能,看完这篇文章让你1分钟瞬间实现。

引入插件

首先,我们需要引入强大的Flutter社区中的两个插件,分别是:

photo_view: ^0.13.0 用来加载查看大图。

image_gallery_saver: ^1.7.1 用来保存图片到本地。

首先我们先来看下如何查看大图,使用非常简单,使用PhotoView只需两行代码就可实现图片的放大及缩小,支持本地图片和网络图片查看。

@override
Widget build(BuildContext context) {
  return Container(
      child: PhotoView(
        // imageProvider: AssetImage("assets/xxx.jpg"),
        imageProvider: NetworkImage("imageUrl"),
      )
  );
}

但是这显然是不能满足我们的需求,一般我们需要查看大图都是一个图片列表,看下面:

文档翻译:

//如果使用画廊列表效果请使用 PhotoViewGallery;
To show several images and let user change between them, use PhotoViewGallery.

也就是说我们如果有一个图片列表进行查看的话,可以用上面的PhotoView,如果是图片列表那么就需要用 PhotoViewGallery

一般我们用的是PhotoViewGallery.builder()方法,下面看一下构造函数:

PhotoViewGallery.builder(
  scrollPhysics: BouncingScrollPhysics(), // 滑动到边界的交互 默认Android效果
  scrollDirection: Axis.horizontal,// 滑动方向 默认水平
  reverse: false,//是否逆转滑动的阅读顺序方向 默认false,true水平的话,图片从右向左滑动
  builder: _buildItem,// 图片构造器
  itemCount: widget.bigImageList.length,  // 图片数量
  loadingBuilder: widget.loadingBuilder ?? // 图片加载过程中显示的组件 可以显示加载进度
      (context, e) {
        return MyImage(image: MyImage.defImg);
      },
  backgroundDecoration: widget.backgroundDecoration ?? // 背景样式自定义
      BoxDecoration(color: Colors.black87),
  scaleStateChangedCallback: (photoViewScaleState){
    // 用户双击图片放大缩小时的回调
    },
  enableRotation:false,//是否支持手势旋转图片
 
  customSize: MediaQuery.of(context).size, //定义图片默认缩放基础的大小,默认全屏 MediaQuery.of(context).size
  allowImplicitScrolling: true,//是否允许隐式滚动 提供视障人士用的一个字段 默认false
  pageController: widget.pageController, // 切换图片控制器
  onPageChanged: (index) {
    // 图片切换回调
    setState(() {
      this.index = index + 1;
    });
  },
),

我们可以看到builder方法是来加载图片的,下面我们就具体看下builderItem方法:

我们可以看到返回的是PhotoViewGalleryPageOptions对象,这个对象就是加载图片的具体类。下面是一些常用的构造方法,这个类还支持手势相关的回调,有兴趣的可以自己研究下。这里就不过多介绍了。

PhotoViewGalleryPageOptions _buildItem(BuildContext context, int index) {
  final BigImageBean item = widget.bigImageList[index];
  return PhotoViewGalleryPageOptions(
    // 图片加载器 支持本地、网络
    imageProvider: NetworkImage(item.imageUrl ?? ""),
    // 初始化大小 全部展示
    initialScale: PhotoViewComputedScale.contained,
    // 最小展示 缩放最小值
    minScale: PhotoViewComputedScale.contained * 0.5,
    // 最大展示 缩放最大值
    maxScale: PhotoViewComputedScale.covered * 4,
    // hero动画设置 
    heroAttributes: PhotoViewHeroAttributes(tag: item.imageUrl ?? ""),
  );
}

至此,我们就完成了图片的预览大图操作,是不是很简单。可以查看了之后,接下来我们还需要将这个图片保存到相册,那就更简单了,我们来看下image_gallery_saver插件是如何保存图片的,

一个是通过字节数组保存,一个是保存文件,那就很简单了,只需要将网络图片转换为字节码然后调用保存就可以了,当然这里需要进行文件存储权限的验证,权限验证插件:permission_handler,这里我们通过dio网络库将网络图片转换为字节, 网络封装库见另一篇文章:dio的二次封装。

Future<Uint8List> imageToBytes(String imageUrl) async {
  var response = await _dio?.get(imageUrl,
      options: Options(responseType: ResponseType.bytes));
  return Uint8List.fromList(response?.data);
}

最后来个效果图展示吧:

我们发现刚才那张图片已经被我们保存到相册了。

总结

站在巨人的肩膀,有些事情可以让我们容易的实现,这也是Flutter社区给与开发者强大的后盾,这两个插件是我经过实战检验过的,在Android、iOS上目前都没有问题,就不贴完整源码了吧,核心代码基本都在上面了,自己动手敲一敲使用起来你会更得心应手,嘿嘿

到此这篇关于Android实现图片预览与保存功能的文章就介绍到这了,更多相关Android 图片预览保存内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android实现图片预览与保存功能

本文链接: https://www.lsjlt.com/news/146201.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现图片预览与保存功能
    目录前言引入插件总结前言 在App开发中,通常为了省流提高加载速度提升用户体验我们通常在列表中或新闻中的插图都是以缩略图压缩过的图片来进行展示,当用户点击图片时我们再去加载真正像素的...
    99+
    2022-11-13
  • Android怎么实现图片预览与保存功能
    这篇“Android怎么实现图片预览与保存功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android怎么实现图片预览与...
    99+
    2023-06-30
  • Android实现点击WebView界面中图片滑动浏览与保存图片功能
    一、实现需求 最近在公司的项目中遇到需求如下: 1、点击 WebView 页面的图片实现开启查看图片模式,即可以显示点击的图片,然后滑动显示下一张图片。 3、长按 WebV...
    99+
    2022-06-06
    图片 webview Android
  • thinkphp5加layui实现图片上传功能(带图片预览)
    目录1、引入文件2、HTML部分3、功能实现4、后台处理图片上传保存内容网站中很多表单都会用到上传图片,logo,照片,用户也会上传图片,这个时候网站就需要一个上传图片的功能,而且在...
    99+
    2023-03-11
    thinkphp5加layui实现图片上传功能 layui图片上传 thinkphp5图片上传
  • Android实现网络图片浏览功能
    我们在上网的过程中经常看到各种图片,那你知道它是如何实现的吗?接下来就让我们一块探讨一下。 网络图片的浏览可以分为俩部分,基本的页面布局与界面交互,让我们一步步的来编写。 基本布局很简单,只需要有一个输入图片链接的EditText,一个浏览...
    99+
    2023-05-31
    android 图片浏览 roi
  • 微信小程序实现图片预览功能
    微信小程序是一种轻量级的应用程序,可以在微信中直接使用,具有跨平台、操作方便等优点。在开发过程中,经常会遇到需要实现图片预览功能的需求。本文即将给出一个具体的代码示例,教你如何在微信小程序中实现图片预览功能。首先,我们需要在微信小程序的页面...
    99+
    2023-11-21
    图片预览 微信小程序
  • Android实现长按图片保存至相册功能
    前言:前面写了一篇reactnative的学习笔记,说reactnative的Android框架中有很多福利,确实是的,也说到了我们app中的一个把图片保存到相册的功能,好吧,...
    99+
    2022-06-06
    图片 Android
  • Android应用中怎么实现一个图片预览缩放功能
    Android应用中怎么实现一个图片预览缩放功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体实现方法如下<&#63;xml version="1....
    99+
    2023-05-31
    android roi
  • vue.js如何实现图片上传预览及图片更换功能
    这篇文章将为大家详细讲解有关vue.js如何实现图片上传预览及图片更换功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图:样式以及效果图一并展示1.HTML<...
    99+
    2022-10-19
  • html5中怎么实现图片上传预览功能
    今天就跟大家聊聊有关html5中怎么实现图片上传预览功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。<!DOCTYPE html&...
    99+
    2022-10-19
  • HTML5中怎么实现本地图片预览功能
    这期内容当中小编将会给大家带来有关HTML5中怎么实现本地图片预览功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问题描述假设我们在 HTML 里面有一个图片上传控件:...
    99+
    2022-10-19
  • JS+HTML5如何实现图片在线预览功能
    这篇文章给大家分享的是有关JS+HTML5如何实现图片在线预览功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下<!DOCTYPE html> ...
    99+
    2022-10-19
  • JS如何实现上传图片实时预览功能
    这篇文章主要为大家展示了“JS如何实现上传图片实时预览功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现上传图片实时预览功能”这篇文章吧。前段时间在...
    99+
    2022-10-19
  • Android 实现WebView点击图片查看大图列表及图片保存功能
     在日常开发过程中,有时候会遇到需要在app中嵌入网页,此时使用WebView实现效果,但在默认情况下是无法点击图片查看大图的,更无法保存图片。本文将就这一系列问题的...
    99+
    2022-06-06
    列表 图片 webview Android
  • jQuery如何实现上传图片前预览效果功能
    这篇文章将为大家详细讲解有关jQuery如何实现上传图片前预览效果功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果如图:代码如下:<!doctype ...
    99+
    2022-10-19
  • angularjs怎么实现多张图片上传并预览功能
    这篇文章主要介绍angularjs怎么实现多张图片上传并预览功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下directive.js    angu...
    99+
    2022-10-19
  • JS如何实现获取图片大小和预览功能
    这篇文章主要为大家展示了“JS如何实现获取图片大小和预览功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现获取图片大小和预览功能”这篇文章吧。具体如...
    99+
    2022-10-19
  • Html5怎么实现上传本地图片并预览功能
    小编给大家分享一下Html5怎么实现上传本地图片并预览功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近工作中需要H5上传显...
    99+
    2022-10-19
  • React+ajax+java如何实现上传图片并预览功能
    小编给大家分享一下React+ajax+java如何实现上传图片并预览功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!之前有在网上找ajax上传图片的资料,大部...
    99+
    2023-06-08
  • 详解nodejs实现本地上传图片并预览功能(express4.0+)
    Express为:4.13.1 multyparty: 4.1.2 代码主要实现本地图片上传到nodejs服务器的文件下,通过取图片路径进行图片预览 写在前面:计划实现图片上传预览功能,但是本地图片上传所...
    99+
    2022-06-04
    上传图片 详解 功能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作