用Hbuilder打包网站,在打包好的app中是无法像网站那样直接使用长按图片保存的功能的,需要在网站里对来自wap2app进行单独处理,接下来介绍一下如何在Hbuilder打包后的app里实现长按图片的功能。

1.在需要实现长按图片保存的页面引入相关css文件:

<link rel="stylesheet" type="text/css" href="css/mui.min.css" />
<link rel="stylesheet" type="text/css" href="css/preview.css"/>

2.页面引入相关js文件:

<script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/mui.zoom.js" type="text/javascript" charset="utf-8"></script>
<script src="js/mui.previewimage.js" type="text/javascript" charset="utf-8"></script>

3.将需要长按保存的图片的img标签加上属性:data-preview-src="" data-preview-group="1"

<img src="data:images/2.jpg" data-preview-src="" data-preview-group="1" />

页面代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>长按保存图片</title>
<link rel="stylesheet" type="text/css" href="css/mui.min.css" />
<link rel="stylesheet" type="text/css" href="css/preview.css"/>
<style type="text/css">
.photo-content{
padding-top: 44px;
background: #fff;
}
.content-padded{
margin: 10px;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<h1 class="mui-title">长按保存图片</h1>
</header>
<div class="photo-content" style="position: relative;">
<div class="content-padded">
<p>这是图片放大预览后长按保存图片示例,点击如下图片可全屏预览功能</p>
<p>
<img src="data:images/1.jpg" data-preview-src="" data-preview-group="1" />
</p>
<p>图片全屏预览后,长按预览图片可以保存到本地</p>
<p>
<img src="data:images/2.jpg" data-preview-src="" data-preview-group="1" />
</p>
<p>第三张图片</p>
<p>
<img src="data:images/3.jpg" data-preview-src="" data-preview-group="1" />
</p>
</div>
</div>
<script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/mui.zoom.js" type="text/javascript" charset="utf-8"></script>
<script src="js/mui.previewimage.js" type="text/javascript" charset="utf-8"></script>
<script src="js/photosave.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

4.添加实现长按保存的js代码:

mui.init({
gestureConfig: {
longtap: true
}
}); mui.previewImage(); mui.plusReady(function() {
document.addEventListener('longtap', function(e) {
var target = e.target;
savePic(target);
});
}); /**
* 长按保存图片
* 1. 获取图片链接
* 2. 创建下载并下载图片
* 3. 保存至相册
*/
function savePic(target) {
if(target.tagName == 'IMG' && target.currentSrc.length > 0 && target.classList.contains('mui-zoom')) { //确保图片链接不为空
var imgUrl = target.src;
console.log('图片地址:' + imgUrl);
var suffix = cutImageSuffix(imgUrl);
mui.confirm("是否保存此图片", "", ["保存", "取消"], function(event) {
var index = event.index;
if(index == 0) {
/**
* 创建下载任务
* http://www.html5plus.org/doc/zh_cn/downloader.html#plus.downloader.createDownload
*/
var downLoader = plus.downloader.createDownload(imgUrl, {
method: 'GET',
filename: '_downloads/image' + suffix
}, function(download, status) {
var fileName = download.filename;
console.log('文件名:' + fileName);
console.log('下载状态:' + status);
/**
* 保存至本地相册
*/
plus.gallery.save(fileName, function() {
/**
* 保存后,弹出对话框是否查看;
*/
mui.confirm("打开相册查看", "", ["打开", "取消"], function(event) {
var gindex = event.index;
if(gindex == 0) {
/**
* 选择图片
*/
plus.gallery.pick(function(file) {
mui.toast("你选择了图片:" + file);
}, function(error) {
console.log(JSON.stringify(error));
}, { });
}
});
});
});
/**
* 开始下载任务
*/
downLoader.start();
}
});
}
}
// 截取图片后缀用于重命名图片,防止%E5%85%89%E6%98%8E%E8%A1%8C编码的文件不被系统相册识别;
function cutImageSuffix(imageUrl) {
var index = imageUrl.lastIndexOf('.');
return imageUrl.substring(index);
}

完成以上步骤后,在Hbuilder中创建一个新的wap2app项目,放入你的项目链接,打包后在手机上安装,即可查看效果。

github地址:https://github.com/erinwxl/wap2app_longtap

备注:

在Hbuilder中新建一个wap2app,选择模板--选择 Hello wap2app模板 也可查看长按保存图片的示例。

转载时请注明出处及相应链接,本文永久地址:https://www.cnblogs.com/wangxiaoling/p/9959656.html,文章标题备注转载,如:xxx【转载】,谢谢!

wap2app(七)-- 长按保存图片的更多相关文章

  1. Swift版本UIWebView长按保存图片

    起因 最近需要做个IOS的壳子,用到长按保存图片的功能,发现百度出来的全是OC语法的例子,很多都不是全面,只能自己写一份Swift版本的,图片下面附上Github地址 效果图 Github地址:htt ...

  2. Android WebView Long Press长按保存图片到手机

    <span style="font-size:18px;">首先要先注册长按监听菜单 private String imgurl = ""; /** ...

  3. WebView长按保存图片;WebView不跳转到系统的浏览器;WebView加载显示进度条;WebView返回事件处理;

    直接看代码即可,代码里面注释写的很清楚,这个类拉下来就能用: 写法和命名比较粗暴,但也简单易懂: public class MainActivity extends AppCompatActivity ...

  4. webview长按保存图片

    private String imgurl = ""; /***     * 功能:长按图片保存到手机     */    @Override    public void onC ...

  5. 微信小程序--预览previewImage(长按保存图片)

    最近开发小程序,想实现二维码图片长按保存,发现无法保存,只能让图片先预览,再保存.注意:只有太阳码才有长按保存和识别功能,普通二维码只有长按保存功能. <image class='banner' ...

  6. h5页面长按保存图片

    由于之前几乎没有使用过canvas:今天遇到了一个很棘手的问题.canvas生成后,然后长按保存到手机. 正常的流程应该是先用canvas进行画图,然后再把canvas转成地址,最后再把转化的地址给i ...

  7. Mui 长按保存图片

    必须先要 引入 mui.js,然后参考具体代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  8. 上传图片,图片过大压缩处理以及解决自拍时会出现图片横屏的bug修复、长按保存图片

    js部分:module.exports = { resize: function (file, callback, options) { //配置 options = Object.assign({ ...

  9. wap2app(九)-- 使用mui.previewImage之后,页面a链接不能跳转

    使用Hbuilder的长按保存图片的预览图片之后,页面所有的a链接都不能跳转. 解决办法: 可以使用下面绑定tap利用js跳转,亲测有效. mui('body').on( 'tap' , 'a' , ...

随机推荐

  1. Anaconda下载地址

    Anaconda installer archive:地址1: https://repo.continuum.io/archive/地址2:https://mirrors.tuna.tsinghua. ...

  2. 搞懂ES6的import export

    引言 说来惭愧,这两个关键字几乎天天在写,但是自己写的模块export出去的对象,import居然拿不到,也是没谁了

  3. pip install 安装出现问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position XX的解决办法

    pip install 安装出现问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position XX的解决办法 转自c ...

  4. 如何正确的在项目中接入微信JS-SDK

    微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...

  5. 高性能Mysql笔记 — explain

    explain 查看sql的执行计划,只是一个近似结果,一般不会实际执行该sql,如果有子查询就会执行子查询 explain table_name,这儿的table_name含义较广:子查询.unio ...

  6. 【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置

    介绍 系列目录:[NET CORE微服务一条龙应用]开始篇与目录 在微服务的应用中,统一的认证授权是必不可少的组件,本文将介绍微服务中网关和子服务如何使用统一的权限认证 主要介绍内容为: 1.子服务如 ...

  7. Python 的 setitem、getitem、delitem 特殊方法使用

    简介 setitem:当属性被以索引方式赋值的时候会调用该方法 getitem:一般如果想使用索引访问元素时,就可以在类中定义这个方法 delitem:当使用索引删除属性时调用该方法 实例 __Aut ...

  8. 高负载集群实战之lvs负载均衡-技术流ken

    lvs简介 LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器. 特点 跨平台:window,linux 作用 实现负载均衡 核心组件 ip_vs:linux的内核功能 ...

  9. JavaScript 系列博客(一)

    JavaScript 系列博客(一) 前言 本系列博客为记录学习 JavaScript 的学习笔记,会从基础开始慢慢探索 js.今天的学习笔记主要为 js 引入.定义变量以及 JavaScript 中 ...

  10. zepto 事件分析1($.Event)

    先看一下zepto事件的函数,在这里,zepto是把zepto对象作为一个立即执行函数的参数传进去的. (function($){ ... ... })(Zepto) 在zepto事件函数中,主要为$ ...