• Stars
    star
    3,002
  • Rank 14,416 (Top 0.3 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 11 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于HTML5的专业级图像处理开源引擎。An image processing lib based on html5.

AlloyImage - 基于HTML5技术的专业图像处理库

功能特性

强大功能

  1. 基于多图层操作 -- 一个图层的处理不影响其他图层
  2. 与PS对应的17种图层混合模式 -- 便于PS处理教程的无缝迁移
  3. 多种基本滤镜处理效果 -- 基本滤镜不断丰富、可扩展
  4. 基本的图像调节功能 -- 色相、饱和度、对比度、亮度、曲线等

便捷开发

  1. 简单快捷的API -- 链式处理、API简洁易用、传参灵活
  2. 多种组合效果封装 -- 一句代码轻松实现一种风格
  3. 友好参数支持 -- 中、英文参数双向支持,降低专业词汇记忆门槛
  4. 接口一致的单、多线程支持 -- 单、多线程切换无需更改一行代码,多线程保持快捷API特性
  5. 可预见的错误友好提醒 -- 对一些可能出现错误的地方提醒,方便开发与调试

丰富扩展

  1. 方便的添加功能扩展 -- 轻松添加滤镜插件
  2. 为扩展提供数学封装 -- 封装了一些数学模块供扩展调用

建议使用场景

1.桌面软件客户端内嵌网页运行方式 >>>打包webkit内核: 用户较大头像上传风格处理、用户相册风格处理(处理时间平均<1s)

2.Win8 Metro应用 >>>用户上传头像,比较小的图片风格处理后上传(Win8下IE10支持多线程)

3.Mobile APP >>>Andriod平台、IOS平台小图风格web处理的需求,如phoneGap应用, 在线头像上传时的风格处理、mobile web端分享图片时风格处理等

如何构建源码?

首先使用git clone复制一份AlloyPhoto的代码到本地:

 git clone git://github.com/AlloyTeam/AlloyPhoto.git

然后使用npm安装modjs

 npm install -g modjs

安装成功后:

cd AlloyPhoto && mod dist

构建成功后会在 ./js/combined目录下生成alloyimage.js文件

变更历史

AlloyImage 1.2开发版代码 获取

在release目录下获取开发版

AlloyImage 1.2 开发中

  1. 更改代码架构,分离Filter
  2. 添加工具方法支持:色系提取
  3. 添加下载文件方法
  4. 添加 棕褐色 滤镜
  5. 添加 色调分离 滤镜
  6. 添加 Gamma 调节
  7. 更改代码,分离Alteration
  8. 添加仿射变换(缩放、平移、旋转)、裁切
  9. 增加可选颜色调节
  10. 曲线命令支持通道调节
  11. 优化IOS下性能,修复变形的bug
新增API 1.2以上

###$AI 或 AlloyImage 初始化一个AlloyImage对象
增加新的参数适配 AIObj $AI(HTMLImageObj img[, Number width, Number height]);
{img} 图片元素
{width} 缩放的宽度 可选
{height} 缩放的高度 可选
如果width 或height一个为null,则使用等比缩放,如果都没有,使用img宽度 tips: 在IOS下请使用width参数来缩放相册中的图片,IOS下不使用缩放,图片太大可能无法绘制到Canvas上

示例

var ps = $AI(img, 600).save('jpg', 0.6);

###save 将合成图片保存成base64格式字符串
base64String save(String filetype [, Number comRatio]);

{filetype} 图片格式类型,支持png,jpg,gif等
{comRatio} 对于jpg格式的图片,图片压缩比率或者图片质量,0 - 1的小数

返回 base64的字符串

示例

var string = AlloyImage(img).save('jpg', 0.8);

###saveFile 将合成图片下载到本地
void saveFile(String fileName[, Number comRatio]);

{fileName} 图片文件名,如果不带后缀,默认为png格式
{comRatio} 对于jpg格式的图片,图片压缩比率或者图片质量,0 - 1的小数

返回 空

示例

img.onclick = function(){
        AlloyImage(this).saveFile('处理后图像.jpg', 0.8);
}

###download 功能与使用同saveFile

 

###transform 进行仿射变换
AIObj transform(Array Matrix);

{Matrix} 变换矩阵 数组 [a1, a2, b1, b2, dx, dy]
如水平翻转 [-1, 0, 0, 1, 0, 0]
示例

//将图层垂直翻转
AlloyImage(img).transform([1, 0, 0, -1, 0, 0]).show();

 

###scaleTo 将图层或合成图像缩放到指定宽高
AIObj scaleTo(Number width, Nubmer height);

{width} 宽度
{height} 高度
如果不指定某一参数,则使用等比缩放

返回 AIObj

示例

//将图层缩放放到100px * 100px
AlloyImage(img).scaleTo(100, 100).show();

//将图层等比缩放到高50px
AlloyImage(img).scaleTo(null, 100).show();

###scale 将图层或合成图像缩放指定倍数
AIObj scale(Number xRatio, Nubmer yRatio);

{xRatio} 横向缩放倍数
{yRatio} 纵向缩放倍数
如果不指定某一参数,则使用等比缩放

返回 AIObj

示例

//将图层缩放放2 * 2倍
AlloyImage(img).scale(2, 2).show();

//将图层等比缩放3倍
AlloyImage(img).scale(3).show();

###rotate 将图层或合成图像旋转一定的角度
AIObj rotate(Numbe degree);

{degree} 顺时旋转角度,以度为单位


返回 AIObj

示例

//将图层旋转30度
AlloyImage(img).rotate(30).show();

###clip 将图层或合成图像裁剪
AIObj rotate(Numbe x0, Number y0, Number width, Number height);

{x0} 起始横坐标
{y0} 起始纵坐标
{width} 裁剪图像宽度
{height} 裁剪图像高度


返回 AIObj

示例

//将图层从(30, 30)开始裁剪宽100px高100px的图像,并获取图像base64代码
var imgString = AlloyImage(img).clip(30, 30, 100, 100).save('jpg', 0.8);

###drawRect 画出合成像的直方图
void drawRect(String seletor, String channel);

{seletor} 直方图绘制的wrapper
{channel} 要绘制的通道, 比如 'RG', 'GB', 默认为'RGB'

返回 空

示例

var imgString = AlloyImage(img).drawRect('#p');

预览、撤销、重做

###doView 保存view的中间结果,下次使用view将会根据上次doView之前的结果进行处理,与undoView结合,可进行撤销操作
AIObj doView();
返回 AIObj
示例参照undoView方法

 

###undoView 撤销上次view的执行结果 AIObj undoView(); 返回 AIObj

示例

var layer = $AI(img);
layer.view("setHSI", 10, 0, 0).show();

// 再次调节 这次还是基于原图调节
layer.view("setHSI", -10, 0, 0).show();

//调节好了 保存这次结果
layer.doView();

// 基于上次的调节结果进行计算
layer.view("brightness", 10, 0, 0).show();

// 不满意 撤销亮度调节操作
layer.undoView().show();

// 回到最原始的图像
layer.undoView().show();

AlloyImage 1.1

  1. 优化代码,组合效果处理性能提升80%
  2. 添加木雕组合效果

AlloyImage 1.0

目录结构

--build 构建目录 一些项目的构建工具

--combined 中间构建合成的项目代码,用于测试和发布

--demo demo文件

--doc 目录文档

--release 已发布的文件版本

--res 一些测试用的静态资源

--src 项目JS源码

alloyimage.base.js core文件 base文件

--module 模块文件

  --alteration     调节模块
   --filter         滤镜插件

--test 测试文件

这些产品使用了AlloyImage

AlloyDesigner

AlloyClip

AlloyPhoto

More Repositories

1

Mars

腾讯移动 Web 前端知识库
9,586
star
2

AlloyFinger

Super tiny size multi-touch gestures library for the web.    You can touch this →
JavaScript
3,403
star
3

PhyTouch

Smooth scrolling, rotation, pull to refresh, page transition and any motion for the web - 丝般顺滑的触摸运动方案
JavaScript
2,954
star
4

eslint-config-alloy

Progressive ESLint config for your React/Vue/TypeScript projects
JavaScript
2,614
star
5

AlloyLever

1kb js library contains development debugging, error monitoring and reporting, user problem localization features - 1KB代码搞定开发调试发布,错误监控上报,用户问题定位
JavaScript
1,381
star
6

curvejs

Made curve a dancer in HTML5 canvas - 魔幻线条
JavaScript
1,300
star
7

CodeGuide

Alloyteam代码规范
HTML
1,275
star
8

JX

JX(Javascript eXtension tools) 是腾讯AlloyTeam推出的模块化、非侵入式Web前端框架,适合构建和组织工业级大规模、高效率的 Web App
JavaScript
1,156
star
9

AlloyCrop

The best and tiny size mobile cropping component - 做最好且最小的移动裁剪组件
JavaScript
940
star
10

Rythem

a fiddler-like project using Qt
C++
878
star
11

alloyteam.github.com

腾讯 AlloyTeam 开源项目官网 - 我们的愿景: 成为业界卓越的Web团队!
JavaScript
846
star
12

alloy-worker

面向事务的高可用 Web Worker 通信框架
TypeScript
635
star
13

AlloyStick

AlloyStick 骨骼动画引擎 - 腾讯 AlloyTeam
JavaScript
430
star
14

Rosin

A tool for web developers debug mobile page with fiddler. http://alloyteam.github.io/Rosin/
C#
310
star
15

StreetFighter

街霸StreetFighter
JavaScript
301
star
16

webtop

HTML5 本地App开发引擎
C++
290
star
17

AlloyPhoto

JavaScript
276
star
18

gopng

GoPng - a HTML5 css sprite generator with cool feature.
272
star
19

sodajs

Light weight but powerful template engine for JavaScript
JavaScript
256
star
20

tslint-config-alloy

AlloyTeam TSLint 规则
JavaScript
205
star
21

JXAnimate

基于CSS3的并行动画、声音引擎 - JX.Animate
CSS
192
star
22

AlloyTimer

AlloyTimer定时器 - 番茄工作法的时间管理应用
JavaScript
190
star
23

JMUI

移动Web开发UI组件库
JavaScript
178
star
24

AlloyViewer

H5图片查看器—Imageview component built with react
JavaScript
176
star
25

JM

面向Mobile的极致JavaScript库
JavaScript
141
star
26

AlloyDesigner

AlloyDesigner是一款致力于提高前端生产效率的浏览器内运行工具,AlloyDesigner + Chrome F12(Especially with WorkSpace) 打造前端新的开发和测试模式
138
star
27

omi-cli

Create website with no build configuration - 创建网站无需任何配置
JavaScript
126
star
28

AlloyPullRefresh

JavaScript
119
star
29

Spirit

腾讯移动Web整体解决方案
CSS
117
star
30

CodeTank

CodeTank(代码坦克)是全世界首款 Javascript 程序员的游戏, 由腾讯 AlloyTeam 用 HTML5、Javascript 等 Web 新技术来构建一个基于互联网的智能坦克机器人战斗仿真引擎
112
star
31

AlloyClip

A PC & Mobile Image Clip Kit based on AlloyImage
JavaScript
108
star
32

MLogger

一个浮在页面上的日志查看工具
JavaScript
100
star
33

Abstract.js

Abstract.js is a web framework for fast development
JavaScript
46
star
34

AlloyLint

apply eslint autofix but keep last author info in git blame。运行 eslint 的自动修复,但是保留最后修改人的信息
TypeScript
41
star
35

AlloyFlow

made workflow simple
JavaScript
39
star
36

AlloyTicker

The Master of Time          DEMO
JavaScript
25
star
37

netural

JavaScript前向神经网络(推理)和反向传播(训练)的实现
JavaScript
21
star