使用 Data(不是 NSData),实际上如何制作 utf8 版本的 jpeg?

2023-12-11

正如这里所解释的,https://stackoverflow.com/a/30624755/294884

[认为]图像的 JPEG 表示是 UTF-8 编码的字符串是错误的。它不是。它是任意二进制数据。 UTF-8 字符串不是任意的字节序列;关于哪些字节可以跟随其他字节有一些规则。

事实上,如何do你最好从图像中创建一个utf8数据,在Data era?

日常用例采用 http 形式。

我做这样的事情,

    formData.append( "Content-Disposition etc".(using: .utf8)! )
    formData.append( "Content type etc".(using: .utf8)! )

    // now let's add a #@@%$%$% image

    let trueBinary = UIImageJPEGRepresentation(i, 0.10)!
    print("the size seems to be \(trueBinary.count)")
    
    let mystere = trueBinary.base64EncodedString(
                  options: .lineLength76Characters)
    
    formData.append( mystere.data(using: .utf8)! )

But

A,这看起来很棘手,而且可能无论如何也不起作用。

B,“lineLength”概念对我来说没有任何意义,所以我只是猜测一些东西,然后在其中输入一些内容。

请注意,令人难以置信的是,如果您有Datax 并添加一些字符串作为 utf 8 使用append.....然后添加一个“真正的”二进制数据,例如 jpeg 表示形式x ...... 事实上它为零“x”——哎呀!(它不只是“不添加二进制”,它把 x 刮得一文不值。)


这条线有问题:

let mystere = trueBinary.count.base64EncodedString(
              options: .lineLength76Characters)

问题是trueBinary is a Data, and trueBinary.count is an Int, and Int没有base64EncodedString方法。你要这个:

let mystere = trueBinary.base64EncodedString(
              options: .lineLength76Characters)

至于“lineLength”概念:如果您不想,则不必指定行长度选项。可以说我不应该在您的问题中引用的答案中指定一个,因为HTTP 请求严格来说并不是 MIME 消息 and 不受 MIME 行长度限制。你可以这样做:

let mystere = trueBinary.base64EncodedString()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Data(不是 NSData),实际上如何制作 utf8 版本的 jpeg? 的相关文章

随机推荐