当前位置: 首页 > 面试题库 >

将图片从网址保存到文件

仲孙奇
2023-03-14
问题内容

Go的新手(我正在研究的第一个简单项目)。

问题:如何从URL获取图像,然后将其保存到计算机中?

这是我到目前为止的内容:

package main

import (
"fmt"
"net/http"
"image"
"io/ioutil"
)

func main() {
        url := "http://i.imgur.com/m1UIjW1.jpg"
        // don't worry about errors
    response, _ := http.Get(url);

    defer response.Body.Close()
    m, _, err := image.Decode(response.Body)

    error := ioutil.WriteFile("/images/asdf.jpg", m, 0644)
}

但是,当我运行此代码时,我得到 cannot use m (type image.Image) as type []byte in function argument

我假设我必须将image.Image(变量m)转换为未定义的字节数?那是解决这个问题的正确方法吗?


问题答案:

无需解码文件。只需将响应正文复制到您打开的文件中即可。这是修改后的示例中的交易:

  1. response.Body是数据流,并实现了Reader接口-意味着您可以按顺序调用Read它,就好像它是打开的文件一样。
  2. 我在这里打开的文件将实现该Writer接口。相反,这是您可以调用的流Write
  3. io.Copy “修补”读取器和写入器,使用读取器流并将其内容写入写入器。

这是我最喜欢的go之一-隐式接口。您不必声明要实现接口,只需实现要在某些情况下使用的接口即可。这允许混合和匹配不需要了解与之交互的其他代码的代码。

包主

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
)

func main() {
    url := "http://i.imgur.com/m1UIjW1.jpg"
    // don't worry about errors
    response, e := http.Get(url)
    if e != nil {
        log.Fatal(e)
    }
    defer response.Body.Close()

    //open a file for writing
    file, err := os.Create("/tmp/asdf.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // Use io.Copy to just dump the response body to the file. This supports huge files
    _, err = io.Copy(file, response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Success!")
}


 类似资料:
  • 问题内容: 我想搜索一个html文件,然后获取该页面上图像的URL。然后,该网址应另存为字符串-多数民众赞成。问题是我真的不知道如何开始。 我的应用程序当然知道图像所在页面的网址。举个例子,让这个URL: 在此页面上,我需要大图像的URL作为字符串。当我查看源代码时,我可以找到该URL,但是我不知道该如何编码-这是我需要的URL: (仅引号内的文本)。 问题答案: 使用JSoup。这是一个HTML

  • 问题内容: 用相机拍照后,我想将其保存在该布局中。我还想将其保存到文件中,并在创建活动时能够加载该图片(因此,如果我切换到其他活动并返回到此活动)。到目前为止,我可以拍照并显示它,但是如果我多次切换活动,图片就会丢失。我有以下相关代码: 我使用以下命令加载图片OnCreate : 问题答案: 听起来您的代码可以正常工作,但是当活动恢复时,您将丢失图像。您可能需要用onPostResume()而不是

  • 我有Fragment1和fragment2。Fragment1是EditTexts的一种形式,它将其数据保存到文本文件中。我希望用户能够在Fragment1和Fragment2之间来回滑动,每次滑动时,来自Fragment1的数据都会保存到一个文件中。 到目前为止,我已经使用ViewPager将每个表单实现为一个新的片段,并使用在用户每次滑动时保存文件。这是可行的,但用户输入的数据完全为空。 这是

  • 当我运行progressdialog出现在屏幕上时,它突然停止运行,并发出通知“应用程序停止了,再试一次”,然后我在android manitor上重复了这个错误,当然我首先要做的是:

  • 问题内容: 我正在开发phonegap应用程序,我需要将URL中的图像保存到Device Photo Gallery。 我在Phonegap Api上找不到执行此操作的方法,而且我也没有找到用于此目的的phonegap插件。 我需要它才能与Iphone和Android一起使用 非常感谢! 问题答案: 这是任何人都可以使用的文件下载代码。您只有三个参数可以像这样使用- 1) 网址 2)您要在SD卡中

  • 本文向大家介绍java根据网络地址保存图片的方法,包括了java根据网络地址保存图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java根据网络地址保存图片的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。