linux中运行 python go c,linux下python、go、C库处理图片缩放效率对比

找到go语言的源码

https://github.com/nfnt/resize

http://code.google.com/p/gorilla/source/browse/lib/appengine/example/moustachio/resize/resize.go?r=3dbce6e267e9d497dffbce31220a059f02c4e99d

使用’go get ‘安装需要使用git。如果是centos 6 直接安装’yum install git’。但是我的是CentOS 5 还要手动安装一下。

# yum install -y gcc make curl curl-devel zlib-devel openssl-devel perl perl-devel

cpio expat-devel gettext-devel

# wget http://codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz

# tar zxvf git-latest.tar.gz

# cd git-2013-03-28/

# autoconf

# ./configure

# make && make install

# git –version

git安装完成,开始测试。我的环境,python2.6,go1.0.2,ImageMagick是C/C++语言开发使用也比较广泛。直接用命令测试。。使用一张150k 510×382的图片做测试。缩成宽300的等比例缩小图。

# go get github.com/nfnt/resize

go 测试代码

package main

import (

"github.com/nfnt/resize"

"image/jpeg"

"os"

)

func main() {

// open "test.jpg"

file, err := os.Open("test.jpg")

if err != nil {

print("Open File Error")

}

// decode jpeg into image.Image

img, err := jpeg.Decode(file)

if err != nil {

print("Not image file")

}

file.Close()

// resize to width 1000 using Lanczos resampling

// and preserve aspect ratio

m := resize.Resize(300, 0, img, resize.Lanczos3)

out, err := os.Create("test_go.jpg")

if err != nil {

print("Save Image Error!")

}

defer out.Close()

// write new image to file

jpeg.Encode(out, m, nil)

}

python 测试代码

#!/bin/env python

# -*- coding:utf-8 -*-

# --------------------------------

# Filename: cut_image.py

# Revision: 1.1

# Author: simon-zzm

# Web: www.simonzhang.net

# Email: simon-zzm@163.com

# --------------------------------

import Image

def main():

file = Image.open('test.jpg')

w = file.size[0]

h = file.size[1]

re_data = file.resize((300, int(h/(float(w)/300))),)

re_data.save('test_py.jpg', 'JPEG',)

if __name__ == '__main__':

main()

在linux下使用time进行测试结果

# time python cut_image.py

real 0m0.051s

user 0m0.040s

sys 0m0.009s

# time go run cut_image.go

real 0m2.736s

user 0m2.695s

sys 0m0.039s

# time convert -resize 300x test.jpg test_c.jpg

real0m0.073s

user0m0.070s

sys0m0.002s

-rw-r–r– 1 root root 150332 Jul 16 2012 test.jpg

-rw-r–r– 1 root root 12929 Mar 28 23:13 test_go.jpg

-rw-r–r– 1 root root 13087 Mar 28 23:13 test_py.jpg

-rw-r–r– 1 root root 58591 Mar 28 23:14 test_c.jpg

总结:GO使用这个方法作为图片缩放的处理速度和python处理速度的差距太大了。烦请高手指点如何处理。不过GO的语法还是比较简单,值得学习。之前做的多语言简单累加计算测试,GO效率还是比较高,所以处理业务逻辑处理的效率还应该不错。

源码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值