apiCloud中图片裁剪模块FNImageClip的使用

简介:

思路

1.获取需裁剪图片的地址
2.跳转到裁剪页面
3.裁剪成功返回新图片地址
4.替换原有图片地址

增加修饰和事件

str += '<li class="tu image" id="'+imgType+'_'+i+'" style="background: url('+ret.list[i].path+')no-repeat;background-size:cover;" onclick="showClip(\''+imgType+'_'+i+'\',\''+ret.list[i].path+'\')"><input type="hidden"  value="'+ret.list[i].path+'"><div class="badge" onclick="delPic(this,\''+imgType+'\')"><i class="aui-iconfont aui-icon-close"></i></div></li>';

上面是动态生成的图片html布局数据,增加一个id标识id="'+imgType+'_'+i+'",增加一个点击事件onclick="showClip(\''+imgType+'_'+i+'\',\''+ret.list[i].path+'\')"

打开裁剪页面,并传入参数element_id和img_url

// 裁剪图片
function showClip(element_id,img_url) {
    // 处理图片裁剪
    openWinPro('clip','element_id:'+element_id+',img_url:'+img_url);
}

裁剪页面进行处理

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport"
          content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0">
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <title>图片裁剪</title>
    <link rel="stylesheet" type="text/css" href="../css/api.css">
    <link rel="stylesheet" type="text/css" href="../css/aui.2.0.css">
    <style>
        body{
            background: #fff;
        }
        .aui-btn{
            padding:0.3rem 2rem;
        }
  
        .footer{
            position: fixed;
            z-index: 999;
            bottom: 1rem;
        left:20%;
        }
        
    </style>

</head>
<body>
<header class="aui-bar aui-bar-nav aui-margin-b-15 header">
    <a class="aui-pull-left aui-btn" onclick="api.closeWin({});">
        <span class="aui-iconfont aui-icon-left"></span>
    </a>
    <div class="aui-title">图片裁剪</div>
</header>

<div class="aui-list-item-inner aui-list-item-center aui-list-item-btn footer">
    <div class="aui-btn aui-btn-info aui-margin-r-5" onclick="fnSave();">提交</div>
    <div class="aui-btn aui-btn-danger aui-margin-l-5" onclick="fnReset();">重置</div>
</div>

<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript" src="../script/common.js"></script>
<script type="text/javascript">

    var FNImageClip;
    var element_id;
    apiready = function() {
        var header=$api.dom('header');
        $api.fixStatusBar(header);
        
        element_id = api.pageParam.element_id;
        var img_url    = api.pageParam.img_url;
        //  alert(element_id+"----"+img_url);

        FNImageClip = api.require('FNImageClip');
        FNImageClip.open({
            rect: {
                x: 0,
                y: document.querySelector('.header').offsetHeight,
                w: api.winWidth,
                h: api.winHeight - 150
            },
            srcPath: img_url,
            style: {
                mask: '#fff',
                clip: {
                    w: 250,
                    h: 250,
                    x: 60,
                    y: 80,
                    borderColor: '#0f0',
                    borderWidth: 1,
                    appearance: 'rectangle'
                }
            }
        });
    };

    function fnSave(){
        FNImageClip.save({
            destPath: 'fs://image/temp'+new Date().getTime()+'.png',
            copyToAlbum: false,
            quality: 1
        },function(ret, err){
            if(ret) {
                // 提示裁剪成功
                toast("裁剪成功");
                // 发送事件监听
                api.sendEvent({
                    name: 'clip_success',
                    extra: {
                        element_id: element_id,
                        new_img_url: ret.destPath
                    }
                });

                // 关闭页面
                setTimeout("api.closeWin({});",1000);

            } else{
                alert('裁剪失败,请重试');
            }
        });
    }

    function fnReset(){
        FNImageClip.reset();
    }
</script>
</body>
</html>

裁剪页面获取参数,负责裁剪图片,并发送事件监听和传递参数

api.sendEvent({
    name: 'clip_success',
    extra: {
        element_id: element_id,
        new_img_url: ret.destPath
    }
});

原页面增加监听事件和处理

    // 监听图片裁剪
    api.addEventListener({
        name: 'clip_success'
    }, function(ret, err) {
        if (ret) {
            $("#"+ret.value.element_id).css('background-image','url('+ret.value.new_img_url+')');
            $("#"+ret.value.element_id+" input").val(ret.value.new_img_url);
        }
    });

一切都ok了

裁剪前

裁剪中

裁剪后


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6208600.html,如需转载请自行联系原作者

相关文章
|
移动开发 前端开发 JavaScript
前端代码规范
前端开发工具组件的广泛应用提升了开发效率,但也带来了代码管理和维护的挑战。为解决这一问题,各团队制定了相应的代码规范。良好的代码规范不仅提升个人代码质量,还便于团队协作。本文从命名、HTML、CSS、JavaScript等方面详细介绍了前端代码规范,强调简洁、有条理、易读的重要性。遵循这些规范,有助于提高开发效率和代码质量。
877 0
ant-design-vue将英文改为中文 DatePicker日期控件
ant-design-vue将英文改为中文 DatePicker日期控件
1114 0
|
5天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
11天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
3天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
10天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
6天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
500 13
|
4天前
|
编解码 文字识别 算法
一张图能装下“千言万语”?DeepSeek-OCR 用视觉压缩长文本,效率提升10倍!
一张图能装下“千言万语”?DeepSeek-OCR 用视觉压缩长文本,效率提升10倍!
389 10