【发布时间】:2016-01-29 03:29:45
【问题描述】:
我创建了一些代码来在 UIImage 上下文中创建 UIBezierPath。然后获取图像并创建一个 base64 字符串。我相信我应该在UIImage 的开头和结尾绘制路径。但是,经过几个小时后,它无法正常工作。我正在将 base64 字符串复制到网站以下载图像以查看它是否有效。我在操场上写这个:
import Foundation
import UIKit
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 200), false, 0.0)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIColor.blackColor().setStroke()
let path = UIBezierPath()
path.lineWidth = 2
path.moveToPoint(CGPointMake(100, 0))
path.addLineToPoint(CGPointMake(200, 40))
path.addLineToPoint(CGPointMake(160, 140))
path.addLineToPoint(CGPointMake(40, 140))
path.addLineToPoint(CGPointMake(0, 40))
path.closePath()
UIGraphicsEndImageContext();
let data = UIImagePNGRepresentation(image)
let b64 = data?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(b64!)
我猜是因为我的视网膜显示结果的 PNG 是 1000x1000。图像本身是完全透明的,什么都看不见。我正在使用这个站点来解码 base64 并保存一个文件,我已经尝试了另外 2 个来查看它是否是该站点。 http://www.motobit.com/util/base64-decoder-encoder.asp
编辑 我刚刚尝试了以下代码,看看我的图像或贝塞尔曲线是否存在问题或保存到 bas64。这段代码效果很好。所以我认为这是我的贝塞尔曲线的问题。
import Foundation
import UIKit
let image = UIImage(data: NSData(contentsOfURL: NSURL(string: "http://i.imgur.com/crr4m48.jpg")!)!)!
let data = UIImagePNGRepresentation(image)
let b64 = data?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(b64!)
【问题讨论】:
-
是创建图片的问题,还是转Base64的问题?这是两个完全不相关的操作。将 PNG 数据保存到文件中,看看是否可以打开该图像文件。如果是这样,问题在于您的 Base64 转换。此外,加载一些预先存在的图像并使用 that 作为 Base64 代码的输入——会发生什么?
-
@Caleb 我刚刚通过从 URL 加载进行了测试,它工作正常。这是我的
UIBezierPath,不知何故很时髦。
标签: ios swift uiimage base64 cgpath