如何转换图像以上传Spotify个人资料图片?

I'm setting up an image encoder function where you input an image URL and it returns the ISO-8859-1 version of it. How would I write a function that sends an HTTP GET request to the URL and converts those bytes to ISO-8859-1? The code below is everything I have so far.

func grabImageBytes(imageURL string) ([]byte, error) {
    req, _ := http.NewRequest("GET", imageURL, nil)
    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        return nil, err
    } else {
        return body, nil
    }
}

other func:

func getRandomImage(keyword string) (string, error) {
    req, _ := http.NewRequest("GET", "https://www.google.com/search?tbm=isch&q="+keyword, nil)
    req.Header.Add("authority", "www.google.com")
    req.Header.Add("upgrade-insecure-requests", "1")
    req.Header.Add("referer", "https://images.google.com/")
    req.Header.Add("accept-language", "en-US,en;q=0.9")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    var imageURL string

    if strings.Contains(string(body), ",\"ou\":\"") {
        imageURL = strings.Split(strings.Split(string(body), ",\"ou\":\"")[1], "\",\"ow\":")[0]
    } else {
        return "", errors.New("Image not found.")
    }
    req2, _ := http.NewRequest("GET", imageURL, nil)

    res2, _ := http.DefaultClient.Do(req2)

    defer res2.Body.Close()
    if res2.StatusCode == 404 {
        return "", errors.New("Image not found.")
    } else {
        return imageURL, nil
    }

}
dongzhuji1042
dongzhuji1042 如果它是用Base64编码的,为什么我的发布请求是用ISO-8859-1?
一年多之前 回复
douhu2898
douhu2898 再说一遍,你在说什么?ISO-8859-1不是加密。这看起来像XY问题。相反,您应该描述您遇到的问题,而不是您认为解决方案可能是什么。
一年多之前 回复
douzhenqun1271
douzhenqun1271 我正在尝试为个人资料图片创建图片网址上传器,以进行Spotify。查看发布请求时,从计算机上传到桌面应用程序的图像采用ISO-8859-1加密。真奇怪。
一年多之前 回复
dongxing4805
dongxing4805 您仍然没有道理。ISO8859-1是字符编码,而不是图像编码。en.wikipedia.org/wiki/ISO/IEC_8859-1
一年多之前 回复
dqrkcjxbi35024762
dqrkcjxbi35024762 应该在说明中指定更多内容,哈哈。我的意思是我想使用URL获取图像并将该图像转换为ISO-8859-1。
一年多之前 回复
duanchen9594
duanchen9594 您想转换为ISO-8859-1到底是什么?转换URL没有意义,因为它必须使用UTF-8。如果将其转换,则将是相同的,或者,如果您尝试使用结果来获取图像,则Web服务器将只给您404。如果尝试转换二进制数据,则最终将得到一个不再是有效映像的垃圾文件。
一年多之前 回复
douxieti6851
douxieti6851 您是说要在图像上运行OCR?
一年多之前 回复

1个回答



您声称Spotify个人资料图片是 ISO 8850-1 编码/加密没有任何意义。</ p>

更有意义的是它是Base64编码。 / p>

例如</ p>


针对开发人员的Spotify:Web API:上传自定义播放列表封面图片。</ p>

Base64 编码的JPEG图像数据,最大有效负载大小为256 KB </ p>
</ blockquote>


在Go中,</ p>

\ n

打包base64 </ p>

import“ encoding / base64” </ code> </ p>

包base64实现RFC 4648指定的base64编码。</ p>
</ blockquote>


另一条证据:“ HTTPS UTF-8格式的请求” </ p>


针对开发人员的Spotify:Web API </ p>

请求</ p>

Spotify Web API基于REST原理。 通过标准HTTPS请求以UTF-8格式访问数据资源到API
端点。</ p>
</ blockquote>


使用您的Stack Overflow个人资料图片:</ p>

 包main 

import(
“ encoding / base64”
“ fmt”
“ io / ioutil”
“ net / http“
” os“

func captureImageBytes(imageURL string)([] byte,error){
req,err:= http.NewRequest(” GET“,imageURL,nil)
如果err!= nil {
返回nil,err
}
res,err:= http.DefaultClient.Do(req)
如果err!= nil {
返回nil,err
}
res.Body.Close()
body,err:= ioutil.ReadAll(res.Body)
如果err!= nil {
return nil,err
}
enc:= base64.StdEncoding
img := make([] byte,enc.EncodedLen(len(body)))
enc.Encode(img,body)
返回img,nil
}

func main(){
imageURL:= https://lh5.googleusercontent.com/-P8ICR-LXoBs/AAAAAAAAAAI/AAAAAAAAE04/fVAeB6_nMeg/photo.jpg?sz=328
img,err:= catchImageBytes(imageURL)
如果err!= nil {\ n fmt.Fprintln(os.Stderr,err)
返回
}
fmt.Println(string(img))
}
</ code> </ pre>
</ DIV>

展开原文

原文

Your claim that the Spotify profile picture image is ISO 8850-1 encoded/encrypted makes no sense.

What would make more sense is that it is Base64 encoded.

For example,

Spotify for Developers: Web API: Upload a Custom Playlist Cover Image.

Base64 encoded JPEG image data, maximum payload size is 256 KB


In Go,

Package base64

import "encoding/base64"

Package base64 implements base64 encoding as specified by RFC 4648.


Another piece of evidence: "HTTPS requests in UTF-8 format"

Spotify for Developers: Web API

Requests

The Spotify Web API is based on REST principles. Data resources are accessed via standard HTTPS requests in UTF-8 format to an API endpoint.


For example. using your Stack Overflow profile picture:

package main

import (
    "encoding/base64"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func grabImageBytes(imageURL string) ([]byte, error) {
    req, err := http.NewRequest("GET", imageURL, nil)
    if err != nil {
        return nil, err
    }
    res, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        return nil, err
    }
    enc := base64.StdEncoding
    img := make([]byte, enc.EncodedLen(len(body)))
    enc.Encode(img, body)
    return img, nil
}

func main() {
    imageURL := `https://lh5.googleusercontent.com/-P8ICR-LXoBs/AAAAAAAAAAI/AAAAAAAAE04/fVAeB6_nMeg/photo.jpg?sz=328`
    img, err := grabImageBytes(imageURL)
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
        return
    }
    fmt.Println(string(img))
}

download20151010
download20151010 通过“它”,我指的是“ @peterSO
一年多之前 回复
dream3323
dream3323 我如何将其合并到我刚刚编辑到问题中的getRandomImage函数中?
一年多之前 回复
douxia9826
douxia9826 原始字符串文字和解释后的字符串文字:golang.org/ref/spec#String_literals
一年多之前 回复
duan20145
duan20145 我注意到而不是普通的'',这有什么意义? 我是初学者:)
一年多之前 回复
dqtm8504
dqtm8504 我在回答中添加了一个简单的示例。 在我的答案中单击指向包base64文档的链接。 有一些有用的例子。 如果遇到问题,请在您的问题中发布代码。
一年多之前 回复
doulang5323
doulang5323 如何将其合并到示例代码中?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐