热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

imageprocess图片裁剪/等比缩放,压缩,支持本地/同域视频文件截图(html5+canvas)

image-process-toolsImagepreprocessingforupload(html5+canvas),ie10+解决图片上传前裁剪、等比缩放,压缩,支持本地视频
image-process-tools

Image pre processing for upload (html5 + canvas), ie10+

解决图片上传前裁剪、等比缩放,压缩,支持本地视频、同域视频文件截图功能等。

  • 裁剪图片:同时设置参数width, height
  • 等比缩放:按宽度缩放,只设置width; 同理按高度缩放,只需设置height
  • 不裁剪、不缩放,直接返回源文件base64数据
  • 视频截图返回数据中含有字段videoFile, videoWidth, videoHeight, duration。其他参数为截图参数

源码地址:https://github.com/capricornc…

演示地址:https://capricorncd.github.io…

npm

npm install image-process --save-dev

使用方法

ES6+

import { ZxImageProcess } from 'image-process'
const zxImageProcess = new ZxImageProcess({
// 默认为空,图片和视频文件,前提是浏览器支持input[accept=]
accept: 'video/*',
// 自动裁剪
auto: false,
// 触发文件选择的元素
selector: '#buttonId',
// 限制宽度等比缩放,则只需设置width值
// 限制高度等比缩放,则只需设置height值
// 同时设置了width、height值,则会对图片按尺寸裁剪
width: 600,
height: 400,
// 裁剪容器按钮样式
submitStyle: '',
cancelStyle: 'color: red',
// 最大文件限制
maxSize: 50,
success: function (result) {
// 返回数据
console.log(result);
},
error: function (err) {
console.error(err);
}
})

不初始化ZxImageProcess,直接使用期内部方法handleMediaFile(file, options),返回promise对象

import { handleMediaFile } from 'image-process'
const optiOns= {
// 默认为空,图片和视频文件,前提是浏览器支持input[accept=]
accept: 'video/*',
// 自动裁剪
auto: false,
width: 600,
height: 400,
// 文件大小限制50M
maxSize: 50
}
// 处理图片或视频文件
handleMediaFile(file, options)
.then(res => {
console.log(res)
})
.catch (err => {
console.error(err)
})

browser

使用效果

https://capricorncd.github.io…

Options 参数

  • auto true|false 自动处理图片,裁剪时不弹出手动位置调整框。默认为false。
  • selector: #buttonId 选择图片按钮id,支持id、class选择器,或者HTMLElement对象(仅ZxImageProcess实例化时有效)
  • width: 640 裁剪或缩放宽度为640px(可选)

    1.限制宽度缩放,则只需设置width值。

    2.限制高度缩放,则只需设置height值。

    3.同时设置了width、height值,则会对图片按尺寸裁剪

  • height: 640 裁剪或缩放高度为640px(可选)
  • maxSize: 50 文件大小最大限制,单位M(兆)。默认50M
  • success: function(result){ console.log(result) } 图片处理完成后的回调函数(仅ZxImageProcess实例化时有效)

    base64:
    base64 图片base64数据

    blob: blobData 处理成功的图片数据,可直接上传至服务器,或赋值给input利用form表单提交。

    element: canvas canvas节点对象

    height: 640 处理完成的图片宽度

    width: 640 处理完成的图片宽度

    url: blob:url

    raw: Object 原图片相关属性(宽高/文件大小/Base64编码数据/类型/元素节点)

    size: 21100 处理完成的图片文件大小

    type: image/png 处理完成的图片类型

  • error: function(err){ alert(err.message); } 处理过程中的错误或警告回调函数(仅ZxImageProcess实例化时有效)
  • submitStyle: color: #f00 裁剪框确认按钮样式(仅ZxImageProcess实例化时有效)
  • cancelStyle: color: #f00 裁剪框取消按钮样式(仅ZxImageProcess实例化时有效)

方法

  • conversion(size) 将size单位B转换为KB或M(大于1024KB则返回M)
  • toBlobData(base64) base64转blob
  • toBlobUrl(file|blob) 文件数据转blob url
  • reCrop() 重新显示图片裁剪窗口,重新调整裁剪图片

Error

codemessage说明
1初始化参数selector不合法,非有效字符串或DOM元素
2未获取到body元素
3未获取到selector对应DOM元素
4未选中任何文件
5调用方法reCrop()时,未获取到之前的文件数据
7处理的file非图片或视频文件
8读取file文件数据出错
11预加载图片数据出错
12文件太大,超过了最大限制
13视频截图失败,视频资源可能不在同域中
21图片手动裁剪,设置预览图片src失败
22用户取消了裁剪位置设置

源码地址:https://github.com/capricornc…

演示地址:https://capricorncd.github.io…


推荐阅读
  • React图片输入框移动端网页_018
    React-图片输入框-移动端网页gitHub地址觉得有参考价值,点个赞https:github.comxiaopingzh…目录结构.├──README.md├──dist│├─ ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • a web-based music player(GO + html5)
    github地址:https:github.comcoderchengmusic-player后台是用GO(windowslinux都可以),前端是HTML5推荐 ... [详细]
author-avatar
Sunshine5585
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有