为了账号安全,请及时绑定邮箱和手机立即绑定

在Go中从HTTP请求的主体读取图像

在Go中从HTTP请求的主体读取图像

Go
九州编程 2021-04-28 21:17:23
我正在玩Go(这是有史以来第一次),我想构建一个工具来从Internet检索图像并剪切它们(甚至调整大小),但是我坚持第一步。package mainimport (  "fmt"  "http")var client = http.Client{}func cutterHandler(res http.ResponseWriter, req *http.Request) {  reqImg, err := client.Get("http://www.google.com/intl/en_com/images/srpr/logo3w.png")  if err != nil {    fmt.Fprintf(res, "Error %d", err)    return  }  buffer := make([]byte, reqImg.ContentLength)  reqImg.Body.Read(buffer)  res.Header().Set("Content-Length", fmt.Sprint(reqImg.ContentLength)) /* value: 7007 */  res.Header().Set("Content-Type", reqImg.Header.Get("Content-Type")) /* value: image/png */  res.Write(buffer)}func main() {  http.HandleFunc("/cut", cutterHandler)  http.ListenAndServe(":8080", nil) /* TODO Configurable */}我可以请求图片(让我们使用Google徽标)并获取图片的种类和大小。确实,我只是在重新编写图像(将其视为玩具“代理”),设置Content-Length和Content-Type并将字节片写回,但是我在某处弄错了。查看在Chromium 12.0.742.112(90304)上呈现的最终图像的外观:我也检查了下载的文件,它是7007字节的PNG图像。如果我们查看请求,它应该可以正常工作:GET / cut HTTP / 1.1用户代理:curl / 7.22.0(i486-pc-linux-gnu)libcurl / 7.22.0 OpenSSL / 1.0.0e zlib / 1.2.3.4 libidn / 1.23 libssh2 / 1.2.8 librtmp / 2.3主机:127.0.0.1:8080接受:/HTTP / 1.1 200 OK内容长度:7007内容类型:image / png日期:2011年12月27日星期二19:51:53 GMT[PNG数据]您认为我在这里做错了什么?免责声明:我在抓痒,所以我可能使用了错误的工具:)无论如何,我可以在Ruby上实现它,但在尝试之前请尝试一下。更新:仍在抓痒,但是...我认为这将是一个很好的并行项目,因此我将其打开https://github.com/imdario/go-lazor如果它没有用,请访问http://github.com/imdario/go-lazor。至少有人可以从开发它的参考文献中找到有用性。他们是给我的。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 360 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信