cocoscreator打开相册或者读取本地图片并进行显示

CocosCreator发布web版打开相册或者读取电脑本地图片操作

1.如果要在项目预览的时候生效,首先需要修改一下引擎的预览文件 index.jade

具体的路径一般在引擎编辑器目录下的    \resources\static\preview-templates

新增1行代码:

<input id="OpenImageFile" type="file" capture="camera" accept="image/*"/>

在这里要注意一下缩进,不然预览的时候可能会出错

在构建web版本的时候也需要在index.html文件里面加上input标签,但是格式稍有不同,具体如下:

//后面的style主要是为了不让上传文件的div节点显示在我们的页面中,免得影响我们的页面布局
<input id="OpenImageFile" type="file" capture="camera" accept="image/*" style="visibility: hidden">

 2.前期工作准备好之后,准备以下代码:

let OpenImageFile = {

    /**
     * 允许重复上传
     * 这里的函数操作主要是为了允许可以重复打开同一个文件
     */
    canRepeatUpload() {
        let input_imageFile = document.getElementById('OpenImageFile');
        if (input_imageFile == null) {
            cc.log('上传失败');
            return;
        }
        if (input_imageFile.outerHTML) {
            input_imageFile.outerHTML = input_imageFile.outerHTML;
        }
        if (input_imageFile.value) input_imageFile.value = null;
    },

    /**
     * 打开文件操作
     */
    openFile() {
        let input_imageFile = document.getElementById('OpenImageFile');
        if (input_imageFile == null) return;
        // 添加需要处理的代码
        input_imageFile.onchange = function (event) {
            let files = event.target.files;
            let upType = files[0].type;
            if (upType == 'image/gif' || upType.indexOf("image") < 0) {
                alert('只允许上传图片文件!');
                OpenImageFile.canRepeatUpload();
                return;
            }
            if (files && files.length > 0) {
                try {
                    var fileReader = new FileReader();
                    fileReader.readAsDataURL(files[0]);
                    //限制允许上传的图片最大为5m
                    if (files[0].size > (1024 * 1024 * 5)) {
                        alert("文件过大,请重新选择");
                        OpenImageFile.canRepeatUpload();
                        return;
                    }
                    fileReader.onload = function (event2) {
                        //读取图片的操作
                        if (fileReader.readyState == fileReader.DONE) {
                            OpenImageFile.canRepeatUpload();
                            let strImg = event2.target.result;
                            let img = new Image();
                            img.src = strImg;
                            img.onload = function () {
                                //将读取到图片生成一个可以给sprite使用的texture
                                let texture = new cc.Texture2D();
                                texture.initWithElement(img);
                            }
                        }
                    };
                } catch (e) {
                    alert('文件读取失败,请再试一次');
                    OpenImageFile.canRepeatUpload();
                    return;
                }
            }

        };
        input_imageFile.click();
    },
};
module.exports = OpenImageFile;

3.具体使用方法:在你要使用的地方,例如按钮的点击事件上调用openFile()方法。即可获取到读取的图片信息。如果要显示获取到的图片,则将上方获取到的texture生成为一个spriteFrame即可。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值