golang缩略图
u013025612 · · 4642 次点击 · · 开始浏览今天研究了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)
}版权声明:转载请注明博客来源,谢谢。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
今天研究了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)
}版权声明:转载请注明博客来源,谢谢。