加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang缩略图

发布时间:2020-12-16 18:40:52 所属栏目:大数据 来源:网络整理
导读:今天研究了golang生成缩略图的相关知识,在网上找到一篇不错的相关博客,博客地址:http://www.cnblogs.com/ghj1976/p/3445507.html。 有个注意事项这里提醒一下: 官方文档原话: Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用De

今天研究了golang生成缩略图的相关知识,在网上找到一篇不错的相关博客,博客地址:http://www.cnblogs.com/ghj1976/p/3445507.html。
有个注意事项这里提醒一下:
官方文档原话:
Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用Decode函数解码包含GIF、JPEG或PNG格式图像数据的输入流获得。解码任何具体图像类型之前都必须注册对应类型的解码函数。注册过程一般是作为包初始化的副作用,放在包的init函数里。因此,要解码JPG图像,只需在程序的main包里嵌入如下代码:
import _ “image/JPG”
_表示导入包但不使用包中的变量/函数/类型,只是为了包初始化函数的副作用。

整理了一下代码:

package main

import (
    "code.google.com/p/graphics-go/graphics"
    "image"
    _ "image/jpeg"   //必须import,否则会出现:unknown format,其余类似
    "image/png"
    "log"
    "os"
)

//读取文件
func LoadImage(path string) (img image.Image,err error) {
    file,err := os.Open(path)
    if err != nil {
        log.Fatal("open file fail:",err)
        return
    }

    defer file.Close()
    img,_,err = image.Decode(file)   //解码图片
    return
}

//保存文件
func SaveImage(path string,img image.Image) (err error) {
    imgfile,err := os.Create(path)

    defer imgfile.Close()
    err = png.Encode(imgfile,img)   //编码图片
    if err != nil {
        log.Fatal("Save fail:",err)
    }
    return
}

func main() {
    src,err := LoadImage("1.jpg")
    if err != nil {
        log.Fatal("open fail:",err)
    }
    dst := image.NewRGBA(image.Rect(0,0,100,100))
    err = graphics.Scale(dst,src)   //缩小图片
    if err != nil {
        log.Fatal(err)
    }
    SaveImage("thumbnailimg.png",dst)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读