正确的将图像编码为base64字符串的方法

3

目前,我正在尝试将图像发送到后端以上传项目中的图像。我已经在 Stack Overflow 和其他地方看过所有可能的答案,但无法成功将数据发送到后端。即使我发送了数据,由于某些问题(最有可能是由于空格),在后端解码的图像格式也不正确。

编码代码 -

let imageData1 : NSData = UIImageJPEGRepresentation(slctdImage, 0.1)!
        let base64StringNew1 = imageData1.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

现在进入有趣的部分 -

当我在本地使用 SWIFT 代码解码它时,我可以获得图像并能够在图像视图中显示它。但是,当我将同样的字符串转换为任何在线 Base64 转换器时,我却没有得到结果。

用于解码的代码 -

let decodedData = NSData(base64EncodedString:base64StringNew1, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)

那么我的问题可能是什么呢?请问有人能够建议使用base64String正确上传图像到后端的方法吗?

2个回答

0

试试这个

func encodeImage(dataImage:UIImage) -> String{
    let imageData = UIImagePNGRepresentation(dataImage)
    return imageData!.base64EncodedStringWithOptions([])
}

已经检查过http://codebeautify.org/base64-to-image-converter,可以正常工作


0

以下是图像编码的代码。

    let image: UIImage = imgProfilePic.image!

    let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(0.3, 0.3))
    let hasAlpha = false
    let scale: CGFloat = 0.0 // Automatically use scale factor of main screen

    UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
    image.drawInRect(CGRect(origin: CGPointZero, size: size))

    let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    var imageData = UIImageJPEGRepresentation(scaledImage, 0.9)
    var base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) // encode the image

    var cd = CoreDataUser(pstrContext: "this")

    var params = "strUsername=" + cd.getUsername()
    params = params + "&strPassword=" + cd.getPassword()
    params = params + "&blbProfilePic=" + base64String

PHP 代码,其中 base64 字符串正在被解码并在浏览器中显示。

if ($rows) { 
    foreach ($rows as $row) { 
    $data = base64_decode($row["fblbProfilePic"]);
    $image = imagecreatefromstring($data);
    header('Content-Type: Image/jpeg');
    imagejpeg($image);
//file_put_contents("test.jpg", $data);
//var_dump($data);

    //echo base64_decode($row["fblbPicture"]);
    /    /echo '<img src="data:image/jpg;base64,' . $row["fblbPicture"]     . '" />';
     }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接