golang缩略图

前端之家收集整理的这篇文章主要介绍了golang缩略图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

整理了一下代码

  1. package main
  2.  
  3. import (
  4. "code.google.com/p/graphics-go/graphics"
  5. "image"
  6. _ "image/jpeg" //必须import,否则会出现:unknown format,其余类似
  7. "image/png"
  8. "log"
  9. "os"
  10. )
  11.  
  12. //读取文件
  13. func LoadImage(path string) (img image.Image,err error) {
  14. file,err := os.Open(path)
  15. if err != nil {
  16. log.Fatal("open file fail:",err)
  17. return
  18. }
  19.  
  20. defer file.Close()
  21. img,_,err = image.Decode(file) //解码图片
  22. return
  23. }
  24.  
  25. //保存文件
  26. func SaveImage(path string,img image.Image) (err error) {
  27. imgfile,err := os.Create(path)
  28.  
  29. defer imgfile.Close()
  30. err = png.Encode(imgfile,img) //编码图片
  31. if err != nil {
  32. log.Fatal("Save fail:",err)
  33. }
  34. return
  35. }
  36.  
  37. func main() {
  38. src,err := LoadImage("1.jpg")
  39. if err != nil {
  40. log.Fatal("open fail:",err)
  41. }
  42. dst := image.NewRGBA(image.Rect(0,0,100,100))
  43. err = graphics.Scale(dst,src) //缩小图片
  44. if err != nil {
  45. log.Fatal(err)
  46. }
  47. SaveImage("thumbnailimg.png",dst)
  48. }

猜你在找的Go相关文章