zoukankan      html  css  js  c++  java
  • Go初接触之imagick

      imagemagick是一个著名的图片处理库,github上有人将其封装成了golang能用的库,所以依旧是写一个缩略图的程序。今天看项目源码看的我头都大了。

     1 package main
     2 
     3 import ("fmt"
     4     "gopkg.in/gographics/imagick.v2/imagick")
     5 
     6 func GetCompressImage(srcImage, dstImage string, quality uint) {
     7     //初始化imagick对象
     8     imagick.Initialize()
     9     defer imagick.Terminate()
    10     var err error
    11     //创建新的MagicWand
    12     mw := imagick.NewMagickWand()
    13     //读取文件
    14     err = mw.ReadImage(srcImage)
    15     if err != nil {
    16         fmt.Println("error1!")
    17     }
    18     //得到并重设图片大小
    19     width := mw.GetImageWidth()
    20     height := mw.GetImageHeight()
    21 
    22     hWidth := uint(width / 2)
    23     hHeight := uint(height / 2)
    24 
    25     err = mw.ResizeImage(hWidth, hHeight, imagick.FILTER_LANCZOS, 1)
    26     if err != nil {
    27         fmt.Println("error2!")
    28     }
    29     //改变图片质量
    30     err = mw.SetImageCompressionQuality(quality)
    31     if err != nil {
    32         fmt.Println("error3!")
    33     }
    34     //导出图片
    35     mw.WriteImage(dstImage)
    36 }
    37 
    38 func main() {
    39     GetCompressImage("/Users/zhanghaoran/Desktop/abc_compress.jpg", "/Users/zhanghaoran/Desktop/abc_compress2.jpg", 80)
    40 }

      使用了go自带的性能测试发现处理200张图片花了2.252s,而libjpeg-turbo所写程序之用了0.9s,效率确实差了不少。

  • 相关阅读:
    runlevel=$(set -- $(runlevel); eval "echo $$#" )
    MPLS
    sql server 查询存储过程返回值
    sql 游标的关闭和释放
    sql 查询某一列最大的数据
    flex label如何通过AS3实现颜色设置
    sql server 字符串拆分
    Linux centos 解决"不在 sudoers 文件中。此事将被报告"的问题
    Flex String拼接
    flex 判断对象的类型
  • 原文地址:https://www.cnblogs.com/Torrance/p/8877039.html
Copyright © 2011-2022 走看看