Golang实现图片缩放服务器
时间:2022-05-04
本文章向大家介绍Golang实现图片缩放服务器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main
import (
"fmt"
"graphics"
"image"
"image/png"
"log"
"net/http"
"os"
"strconv"
"strings"
)
func main() {
http.HandleFunc("/", doImageHandler)
http.ListenAndServe("127.0.0.1:6789", nil)
}
func doImageHandler(w http.ResponseWriter, r *http.Request) {
fmt.Printf("%qn", strings.Split(r.URL.Path, "/"))
url := strings.Split(r.URL.Path, "/")
if len(url) != 3 {
return
}
newdx, uerr := strconv.Atoi(url[1])
if uerr != nil {
log.Fatal(uerr)
}
src, err := LoadImage(url[2])
bound := src.Bounds()
dx := bound.Dx()
dy := bound.Dy()
if err != nil {
log.Fatal(err)
}
// 缩略图的大小
dst := image.NewRGBA(image.Rect(0, 0, newdx, newdx*dy/dx))
// 产生缩略图,等比例缩放
err = graphics.Scale(dst, src)
if err != nil {
log.Fatal(err)
}
header := w.Header()
header.Add("Content-Type", "image/jpeg")
png.Encode(w, dst)
}
// Load Image decodes an image from a file of image.
func LoadImage(path string) (img image.Image, err error) {
file, err := os.Open(path)
if err != nil {
return
}
defer file.Close()
img, _, err = image.Decode(file)
return
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 站在软件工程的角度重新思考面向对象(含高清图谱)
- 剑指Offer LeetCode 面试题57. 和为s的两个数字
- 白嫖Layui树型可折叠,可自定义,可搜索表格的实例
- 剑指Offer LeetCode 面试题53 - II. 0~n-1中缺失的数字
- 聊聊dubbo-go的DubboPackage
- 剑指Offer LeetCode 面试题53 - I. 在排序数组中查找数字 I
- Java虚拟机运行时数据区精华总结
- 剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
- 剑指Offer LeetCode 面试题40. 最小的k个数
- 剑指Offer LeetCode 面试题39. 数组中出现次数超过一半的数字
- 解决Ajax发送DELETE请求时后台无法接收到参数的问题(Restful风格)
- 解决layui的table数据重载reload where参数会保留上次条件的问题
- 终于弄懂了Layui表格重载数据
- 剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
- 剑指Offer LeetCode 面试题17. 打印从1到最大的n位数