npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

imgview-js

v1.2.1

Published

img-viewer图片查看器

Downloads

8

Readme

imgviewer

图片预览器,可以对图片进行放大,缩小,拖拽,旋转,复位,下载和图片的编辑功能(包括画框,画圆,文本,箭头,马赛克,撤回,下载功能)。当前图片的编辑功能也可以单独使用,后面我将继续对其优化,增加更多的灵活性。

使用方式

使用ES6 import或者umd的方式

example:http://81.70.151.250:9090/imgviewer/

script标签引入的方式:

下载这个index.js放到你的项目中使用script标签引入:https://unpkg.com/imgview-js

//script引入 会导出ImgViewer类
<script src="https://unpkg.com/imgview-js"></script>
// 使用
const ImgViewer = imgviewer.default; // 获取imgviewer类
const useScale = imgviewer.useScale; // 获取放大缩小插件
const useDrag = imgviewer.useDrag; // 获取拖拽插件
const useEditPic = imgviewer.useEditPic; // 获取编辑的插件
const useDownloadImg = imgviewer.useDownloadImg; // 获取下载的插件
const useOperateCont = imgviewer.useOperateCont; // 获取操作栏的插件
const container = document.getElementById('imgcont');
const target = document.getElementById('img');
const imgViewer = new ImgViewer({container,target}); // 实例化imgviewer类
const editOptions = {
    imgUrl: target.src, // 图片地址
    width: 900, // canvas展示的宽高
    height: 600, // canvas展示的宽高
    // 编辑时操作的选项
    operateArray:				   ['lastPic','drag','rect','circle','text','arrow','mosaic','revocation','downloadPic'],
    // 控制显示操作项选项
    showOperateSel: ['rect','circle','text','arrow'],
}
// 使用各插件
imgViewer
.use(useScale())
.use(useDrag())
.use(useDownloadImg())
.use(useEditPic(editOptions)) // 在预览上绑定编辑操作
// 控制操作栏的操作项
let arr = [];
// 遍历可以使用的所有操作项
imgViewer.traverseOperateFn((fn,key)=>{
    arr.push(key);
})
// 自定义绑定选中的操作项 operateMap
imgViewer.use(useOperateCont({operateMap:arr}));

ES6 import:

  • 安装

    npm install imgview-js

  • 使用

    import ImgViewer, { useScale, useDrag, useDownloadImg, useOperateCont, useEditPic } from 'imgview-js';
      
    const container = document.getElementById('imgcont');
    const target = document.getElementById('img');
    const imgViewer = new ImgViewer({container,target});
    const editOptions = {
        imgUrl: target.src, // 图片地址
        width: 900, // canvas展示的宽高
        height: 600, // canvas展示的宽高
        // 编辑时操作的选项
        operateArray:['lastPic','drag','rect','circle','text','arrow','mosaic','revocation','downloadPic'],
        // 控制显示操作项选项
        showOperateSel: ['rect','circle','text','arrow'],
    }
    imgViewer
        .use(useScale())
        .use(useDrag())
        .use(useDownloadImg())
    	.use(useEditPic(editOptions)) // 在预览上绑定编辑操作
        .use(useOperateCont());
      
      

ImgViewer 图片查看器

ImgViewer是图片查看器的一个类,接受配置项,进行各项配置操作;

const imgViewer = new ImgViewer(options);

1、配置项options

| Field | Type | default | Description | | ------------- | --------------- | ------- | --------------------------------------------- | | container | HtmlElement | - | 图片的父级容器type为Element | | target | HtmlElement | - | 被操作的图片 type为Element | | rate? | number | 100 | 被放大或缩小的倍数,默认100相当于scale属性的1 | | delta? | number | 20 | 每次放大或缩小的步调 | | maxScale? | number | 500 | 图片能够放大的最大的倍数 | | minScale? | number | 40 | 图片能够缩小的最小的倍数 | | rotate? | number | 0 | 图片当前的旋转的角度,默认的单位为deg | | rotateStep? | number | 90 | 图片旋转的步调,默认的单位为deg |

2、实例方法

scaleOperte缩放方法

this.scaleOperte(type)

type可选值:

| Type | Description | | :---------: | ----------------------------------------------------- | | 'add' | 进行放大操作,根据delta的值作为步调进行增大放大倍数 | | 'minus' | 进行缩小操作,根据delta的值作为步调进行减小放大倍数 | | 'recover' | 恢复原来的大小 |

rotateOperte旋转方法

this.rotateOperte(type)

type可选值:

| Type | Description | | :-------: | ------------------------------------------------------------ | | 'left' | 操作图片向左旋转,旋转步调为配置值rotateStep得大小,默认的单位deg | | 'right' | 操作图片向右旋转 |

traverseOperateFn遍历操作栏的所有方法

this.traverseOperateFn(callback)

参数:

| Field | Type | Description | | :----------: | ---------- | ------------------------------------------------------------ | | 'callback' | Function | 回调函数,实例方法调用时会传入回调fn,key作为参数;fn是操作栏的执行方法,key是操作栏的绑定映射 |

getOperateFn获取操作栏的执行方法

this.getOperateFn(key)

参数:

| Field | Type | Description | | :-----: | -------- | --------------------- | | 'key' | string | key是操作栏的绑定映射 |

addOperateFn为操作栏添加方法

this.addOperateFn(key,fn)

参数:

| Field | Type | Description | | :-----: | ---------- | --------------------- | | 'key' | string | key是操作栏的绑定映射 | | 'fn' | Function | fn是操作栏的执行方法 |

deleteOperateFn删除操作栏的方法

this.rotateOperte(key)

参数:

| Field | Type | Description | | :-----: | -------- | --------------------- | | 'key' | string | key是操作栏的绑定映射 |

修改操作栏的方法需要在绑定操作栏之前进行(即使用useOperateCont之前)

3、use插件使用

this.use(plugin)

插件plugin声明格式:

function plugin(options) //插件也可以配置参数
	return (imgviewer){ // 传入图片查看器的实例
		console.log(imgviewer);
	}
}

插件使用:

const imgViewer = new ImgViewer({container,target});
imgViewer.use(plugin(options))

4、imgViewer内置插件

img-viewer内置了一些插件,可以针对需求进行插拔式使用;

useScale

imgViewer.use(useScale())

给图片查看器绑定缩放方法,插件使用后,可以对图片滑动鼠标滚轮进行对应的放大或者缩小操作

useDrag

imgViewer.use(useDrag())

给图片查看器绑定拖拽方法,插件使用后,可以对图片进行拖拽的操作

useDownloadImg

imgViewer.use(useDownloadImg())

给图片查看器绑定下载的方法,插件使用后,可以在操作栏操作对图片进行下载,会在操作栏增加一个key为'downloadPic'的操作项,所以这个插件需要操作栏配合,并且需要在绑定操作栏之前进行绑定

useEditPic

imgViewer.use(useDownloadImg(options))

给图片查看器绑定编辑的方法,会在弹出层上对图片进行编辑;弹出层是插入在body下面的,铺满整个窗口;

options参数object

| Field | Type | Description | | :--------------: | ------------ | ------------------------------------------------------------ | | imgUrl | string | 图片的路径 | | width | number | canvas显示宽度 | | height | number | canvas显示高度 | | operateArray | array<key> | 为绑定操作栏的key组成的集合,其所有值:'lastPic','drag','rect','circle','text','arrow','mosaic','revocation','downloadPic' | | showOperateSel | array<key> | 目前只有这些操作key支持样式设置['rect','circle','text','arrow'] |

**key值说明:**lastPic:退出编辑,drag:拖拽,rect:画框,circle:画(椭)圆,text:文本,arrow:箭头,mosaic:马赛克,revocation:撤回编辑,downloadPic:下载图片。

useOperateCont

imgViewer.use(useOperateCont(options))

options参数object:不传时默认全部操作项

| Field | Type | Description | | :----------: | ------------ | ------------------------------------------------------------ | | operateMap | array<key> | 为绑定操作栏的key组成的集合,可以对操作栏进行筛选和排序;数组中的key的位置会映射到操作栏的操作项 |

imgViewer实例默认装配上如下操作项:['scaleAdd','scaleMinus','scaleRecover','rotateLeft','rotateRight']分别是放大,缩小,恢复,左旋,右旋;可通过上面实例方法进行删减或者进行排序;

给图片查看器绑定操作栏的方法,插件使用后,可以在图片的下方出现功能操作栏,所以如果有其他的操作功能则需要在绑定操作栏之前进行绑定。

当然,如果这个操作栏的样式不符合你的需求或者压根不需要,那么你可以不用这个useOperateCont插件。自定义操作栏只需要你按照要求自己写一个插件即可,因为你可以根据实例方法traverseOperateFn遍历出所有可以使用的操作方法,然后根据需要调用即可;

ImgEditer 图片编辑器

ImgEditer是一个使用canvas对图片进行编辑的方法,该方法返回一个promise对象,对象传出编辑器实列可进行更多的自定义操作,这个实例实际就是ImgViewer类的实例,所以你可以在实例上取得编辑器的外层容器(插入到body上)container和canvas元素target以及实例方法。图片编辑时不建议开启缩放功能。

方法接受配置项options:

| Field | Type | Description | | :--------------: | ------------ | ------------------------------------------------------------ | | imgUrl | string | 图片的路径 | | width | number | canvas显示宽度 | | height | number | canvas显示高度 | | 'operateArray' | array<key> | 为绑定操作栏的key组成的集合,其所有值:'lastPic','drag','rect','circle', 'text','arrow','mosaic','revocation','downloadPic' | | showOperateSel | array<key> | 目前只有这些操作key支持样式设置['rect','circle','text','arrow'] |

**key值说明:**lastPic:退出编辑,drag:拖拽,rect:画框,circle:画(椭)圆,text:文本,arrow:箭头,mosaic:马赛克,revocation:撤回编辑,downloadPic:下载图片。operateArray 不填写该项可以不显示操作栏。

调用即可ImgEditer(options)返回编辑器实例;

example:http://81.70.151.250:9090/imgviewer/index-edit.html 该例子使用自定义操作栏

单独使用时:

script标签引入方式:

​ 下载这个index.js放到你的项目中使用script标签引入:https://unpkg.com/imgview-js

//script引入 会导出ImgViewer类
<script src="https://unpkg.com/imgview-js"></script>

const ImgEditer = imgviewer.ImgEditer;
const target = document.getElementById('img');
const editOptions = {
    imgUrl: target.src, // 图片url地址就行
    width: 900, 
    height: 600, 
    // 操作栏操作选项 按数组顺序显示 不传就不显示操作栏
    operateArray: ['lastPic','drag','rect','circle','text','arrow','mosaic','revocation','downloadPic'],
    // 控制显示操作项选项
    showOperateSel: ['rect','circle','text','arrow'],
}
ImgEditer(editOptions).then(instance => {
    let container = instance.container;
    let canvas = instance.target;
    // let quit = instance.getOperateFn('lastPic');
    // quit(); // 退出编辑
});
ES6 import:
  • 安装

    npm install imgview-js

  • 使用

    // 引入
    import { ImgEditer } from 'imgview-js';
      
    const target = document.getElementById('img');
    const editOptions = {
        imgUrl: target.src, // 图片url地址就行
        width: 900, 
        height: 600, 
        // 操作栏操作项 按数组顺序显示 不传就不显示操作栏
        operateArray: ['lastPic','drag','rect','circle','text','arrow','mosaic','revocation','downloadPic'],
        // 控制显示操作项选项
        showOperateSel: ['rect','circle','text','arrow'],
    }
    ImgEditer(editOptions).then(instance => {
        let container = instance.container;
        let canvas = instance.target;
        // let quit = instance.getOperateFn('lastPic');
        // quit(); // 退出编辑
    });