GithubHelp home page GithubHelp logo

ofpay / nimg Goto Github PK

View Code? Open in Web Editor NEW
111.0 47.0 53.0 281 KB

a high performance image storage and processing module written by nodejs

License: Apache License 2.0

JavaScript 91.44% CSS 0.38% HTML 6.21% Shell 1.97%

nimg's Introduction

Nimg

NImg 是基于ZImg的nodejs实现。

去掉了ZImg中 memcached的缓存功能,图片上传处理接口使用json数据格式。不兼容ZImg的文件存储。

环境要求:

  • 操作系统:任何能安装 nodejs 的操作系统

  • node版本:>=v0.10

  • ImageMagick版本:>=6.8.7

  • python版本:>=2.6


##使用##

-- 使用前确保node环境及ImageMagick已安装好

#下载NImg

 wget  https://github.com/ofpay/nimg/archive/master.zip -O nimg.zip

#解压

uzip nimg.zip

#安装依赖模组

cd nimg-master
npm install

#修改配置,确保图片存储及上传目录有足够的权限

vi config.js
exports.tmproot='/node/temp'; //上传临时目录,
exports.imgroot='/node/img'; //图片存储目录,
exports.errorlog='/node/log/error.log'; //程序错误日志,记录
exports.port=9000;  //http端口号
exports.appname='NImg';
exports.maxFileSize=1024*1024;//上传最大限制单位字节 1024kb 1mb
exports.maxSide=800; //最大截图边长
exports.minSide=30; //最小截图边长

//支持图像文件类型
exports.imgtypes={
        "gif": "image/gif",
        "jpeg": "image/jpeg",
        "jpg": "image/jpeg",
        "png": "image/png"
};

#启动

sh nimg.sh start

#查看控制台输出

tailf nohup.out

#关闭

sh nimg.sh stop

api

###名词解释### userpath 用户目录,NImg支持多用户系统,使用userpath来区分用户目录

md5 根据图片信息得到md5值

t 图像类型,Nimg支持的目前有4种: jpg|jpeg|png|gif

w 图像宽度

h 图像高度

url 图像访问路径,上传时由接口返回

  • 原图url:{userpath}/{md5}.{t} or {userpath}/{md5}-0-0.{t}

  • 等比例缩放图url: {userpath}/{md5}-{w}-{h}.{t}

  • 强制缩放图url: {userpath}/{md5}-{w}-{h}-f.{t}

  • 根据高边等比例缩放url: {userpath}/{md5}-0-{h}-s.{t}

  • 根据宽边等比例缩放url: {userpath}/{md5}-{w}-0-s.{t}

act 图像处理命令

  • del 删除图像,不需要参数

  • tleft 左旋90度

  • tright 右旋90度

  • resize 缩放,注意:此操作是对当前资源做出修改,不生成新文件

  • info 返回图片信息,高度,宽度,图片大小

param 命令参数

  • 调用resize时,需要. 等比例缩放示例: 500X500 强制缩放:500X500!

act 目录处理命令

  • tsize 获取目录下所有文件大小字节数

###说明###

1.图片访问地址 限制:无

调用地址: http://nimg/{url}

method:get

返回: 图像文件

2.上传api 限制:内网调用

调用地址: http://nimg/{userpath}/upload

可选参数:act(图像预处理),param(预处理参数)

示例:

裁图: act=crop param=wxh+x+y 例如:151x189+174+0

缩图: act=resize param=wxh[!] 例如:100x100(等比例) 200x200!(强制)

旋转: act=rotate param=[-]r 例如:90 (右旋90度) -50(左旋50度)

method:post

成功返回

    {
        "code": 200,
        "msg": "upload success!",
        "data": {
            "t": "gif",
            "userpath": "01",
            "md5": "d6da9ccfcf52211eba99722207ee3d9a",
            "url": "01/d6da9ccfcf52211eba99722207ee3d9a.gif"
        }
    }

失败返回

    {
      "code": 300,
      "msg": "filetype error,not supported txt"
    }

3.图像处理api 限制:内网调用

调用地址:http://nimg/{url}/manage-{act}?a={param}

method:get

成功返回

    {
      "code": 200,
      "msg": "exec ok!"
    }
失败返回
    {
      "code": 301,
      "msg": "exec fail"
    }

4.目录管理api 限制:内网调用

调用地址:http://nimg/{userpath}/{act}

调用示例:http://192.168.111.189:9000/854899/tsize

成功返回

    {

        "code": 200,
        "msg": "success!",
        "data": {
            "userpath": "854899",
            "total": 32515395
        }

    }

###api错误代码对照表###

编码 说明
200 操作成功
300 上传错误
301 处理错误
404 资源不存在

nimg's People

Contributors

freeman983 avatar joecao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nimg's Issues

配置好了 服务也启动好了 就是获取不到 都是不能Cnanot Get

你好:
userpath用户目录 是指什么?

Cannot GET /test/2222.jpg/info
端口也打开了
Thu Aug 17 2017 15:46:42 GMT+0800 (CST):server listening:9000
^[[90mGET /23/tsize ^[[33m404 ^[[90m11ms^[[0m
^[[90mGET /23.jpg ^[[33m404 ^[[90m2ms^[[0m
^[[90mGET /nimg/test/tsize ^[[33m404 ^[[90m2ms^[[0m
Thu Aug 17 2017 15:55:29 GMT+0800 (CST):server listening:9000
^[[90mGET /nimg/test/tsize ^[[33m404 ^[[90m14ms^[[0m
Thu Aug 17 2017 15:57:46 GMT+0800 (CST):server listening:9000
^[[90mGET /test ^[[33m404 ^[[90m13ms^[[0m

Thu Aug 17 2017 15:57:46 GMT+0800 (CST):server listening:9000
^[[90mGET /nimg/test/tsize ^[[33m404 ^[[90m13ms^[[0m
^[[90mGET /nimg/test/tsize ^[[33m404 ^[[90m3ms^[[0m
^[[90mGET /nimg/test/tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/act=tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/act=tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/act=tsize ^[[33m404 ^[[90m0ms^[[0m
^[[90mGET /test/act=tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/tsize ^[[33m404 ^[[90m2ms^[[0m
^[[90mGET /test/tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/tsize ^[[33m404 ^[[90m0ms^[[0m
^[[90mGET /test/tsize ^[[33m404 ^[[90m1ms^[[0m
^[[90mGET /test/tsize ^[[33m404 ^[[90m1ms^[[0m

~

可以异步提交吗?

<script type="text/javascript">
    $(function () {

        //$('#form1').submit(function() {
        //    $.post("http://192.168.1.23/01/upload", function(data) {
        //        alert(data);
        //    });
        //    return false;
        //});

        var options = {
            //dataType: 'json',
            success: function (data) {
                //$("#responseText").text(data);
                alert(data);
            }
        };

        // ajaxForm
        $("#form1").ajaxForm(options);


    });
</script>

<form id="form1" enctype="multipart/form-data" action="http://192.168.1.23/01/upload" method="post">
    Choose file:<input name="userfile" type="file">
    <input type="submit" value="upload">
</form>

Error: Buffer.write(string, encoding, offset[, length]) is no longer supported

我在nodejs 6.9.5环境下启动正常,上传文件就报这个错误
at Buffer.write (buffer.js:732:11)
at MultipartParser.initWithBoundary (/opt/nimg-master/node_modules/formidable/lib/multipart_parser.js:61:17)
at IncomingForm._initMultipart (/opt/nimg-master/node_modules/formidable/lib/incoming_form.js:308:10)
at IncomingForm._parseContentType (/opt/nimg-master/node_modules/formidable/lib/incoming_form.js:250:12)
at IncomingForm.writeHeaders (/opt/nimg-master/node_modules/formidable/lib/incoming_form.js:129:8)
at IncomingForm.parse (/opt/nimg-master/node_modules/formidable/lib/incoming_form.js:97:8)
at /opt/nimg-master/node_modules/connect/lib/middleware/multipart.js:125:12
at noop (/opt/nimg-master/node_modules/connect/lib/middleware/multipart.js:22:3)
at multipart (/opt/nimg-master/node_modules/connect/lib/middleware/multipart.js:76:5)
at /opt/nimg-master/node_modules/connect/lib/middleware/bodyParser.js:57:9

formidable version issu

500 Error: Buffer.write(string, encoding, offset[, length]) is no longer supported
at Buffer.write (buffer.js:753:11)
at MultipartParser.initWithBoundary (/home/img/nimg-master/node_modules/connect/node_modules/formidable/lib/multipart_parser.js:61:17)
at IncomingForm._initMultipart (/home/img/nimg-master/node_modules/connect/node_modules/formidable/lib/incoming_form.js:308:10)
at IncomingForm._parseContentType (/home/img/nimg-master/node_modules/connect/node_modules/formidable/lib/incoming_form.js:250:12)
at IncomingForm.writeHeaders (/home/img/nimg-master/node_modules/connect/node_modules/formidable/lib/incoming_form.js:129:8)
at IncomingForm.parse (/home/img/nimg-master/node_modules/connect/node_modules/formidable/lib/incoming_form.js:97:8)
at /home/img/nimg-master/node_modules/connect/lib/middleware/multipart.js:125:12
at noop (/home/img/nimg-master/node_modules/connect/lib/middleware/multipart.js:22:3)
at multipart (/home/img/nimg-master/node_modules/connect/lib/middleware/multipart.js:76:5)
at /home/img/nimg-master/node_modules/connect/lib/middleware/bodyParser.js:57:9

nodejs v7.6.0
npm 4.1.2
Version: ImageMagick 7.0.5-0 Q16
Python 2.6.6

How can I fix it, can you tell me,please.

图片压缩的问题

Hi Yongcheng,

我是Xinyuan, 关于Nimg我有一个问题想请教一下:

在zimg的文档里面(http://zimg.buaa.us/arch_design.html)里面,提到了这样一段话

除了路径规划,zimg另一大功能就是压缩图片。从用户角度来说,zimg返回来的图片只要看起来跟原图差不多就行了,如果确实需要原图,也可以通过将所有参数置空的方式来获得。基于这样的条件,zimg.c对于所有转换的图片都进行了压缩,压缩之后肉眼几乎无法分辨,但是体积将减少67.05%。具体的处理方式为:

图片裁剪时使用LanczosFilter滤镜;
以75%的压缩率进行压缩;
去除图片的Exif信息;
转换为JPEG格式。
经过这样的处理之后可以很大程度的减少流量,实现设计目标。

我想问一下,Nimg有这样的实现吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.