zoukankan      html  css  js  c++  java
  • golang-generate-1pixel-image

    package main
    
    import (
        "bytes"
        "encoding/base64"
        "flag"
        "html/template"
        "image"
        "image/color"
        "image/draw"
        "image/jpeg"
        "log"
        "net/http"
        "strconv"
    )
    
    /*
    @Time: 2018-12-20 16:50
    @Desc:
    */
    
    var root = flag.String("root", ".", "file system path")
    
    func main() {
        http.HandleFunc("/blue", blueHandler)
        //http.HandleFunc("/red/", redHandler)
        http.Handle("/", http.FileServer(http.Dir(*root)))
        log.Println("Listening on 8080")
        err := http.ListenAndServe(":8080", nil)
        if err != nil {
            log.Fatal("ListenAndServe:", err)
        }
    }
    
    func blueHandler(w http.ResponseWriter, req *http.Request) {
        m := image.NewRGBA(image.Rect(0, 0, 6, 6))
        blue := color.RGBA{255, 255, 255, 1}
        draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src)
    
        var img image.Image = m
        writeImage(w, &img)
    }
    
    func writeImage(w http.ResponseWriter, img *image.Image) {
    
        buffer := new(bytes.Buffer)
        if err := jpeg.Encode(buffer, *img, nil); err != nil {
            log.Println("unable to encode image.")
        }
    
        w.Header().Set("Content-Type", "image/jpeg")
        w.Header().Set("Content-Length", strconv.Itoa(len(buffer.Bytes())))
        if _, err := w.Write(buffer.Bytes()); err != nil {
            log.Println("unable to write image.")
        }
    }
    
    func writeImageWithTemplate(w http.ResponseWriter, img *image.Image) {
    
        buffer := new(bytes.Buffer)
        if err := jpeg.Encode(buffer, *img, nil); err != nil {
            log.Println("unable to encode image.")
        }
        var ImageTemplate string = `<!DOCTYPE html>
        <html lang="en"><head></head>
        <body><img src="data:image/jpg;base64,{{.Image}}"></body>`
        str := base64.StdEncoding.EncodeToString(buffer.Bytes())
        if tmpl, err := template.New("image").Parse(ImageTemplate); err != nil {
            log.Println("unable to parse image template.")
        } else {
            data := map[string]interface{}{"Image": str}
            if err = tmpl.Execute(w, data); err != nil {
                log.Println("unable to execute template.")
            }
        }
    }

    golang生成1像素点图像;

    参考:https://www.sanarias.com/blog/1214PlayingwithimagesinHTTPresponseingolang

  • 相关阅读:
    iOS 基础复习
    iOS项目立项
    Cocos2d-JS项目之四:UI界面的优化
    Cocos2d-JS项目之三:使用合图
    Cocos2d-JS项目之二:studio基础控件的使用
    Cocos2d-JS项目之一:环境(IDE 运行js-tests、IDE 和 studio 统一工程)
    字节对齐导致的iOS EXC_ARM_DA_ALIGN崩溃
    cocos2dx 2.x 骨骼动画优化
    Cocos2dx 把 glview 渲染到 Qt 控件上(Mac 环境)
    [leetcode 周赛 160] 1240 铺瓷砖
  • 原文地址:https://www.cnblogs.com/lavin/p/golang-generate-1pixel-image.html
Copyright © 2011-2022 走看看