我创建了一些代码,用于在UIImage
上下文中创建UIBezierPath
。然后将图像转换为base64字符串。我认为我应该在UIImage
的开头和结尾之间绘制路径。但是,经过多个小时的尝试,它并没有起作用。我正在将base64字符串复制到网站上下载图片以查看其是否有效。我是在playground中编写代码的:
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,我猜测是因为我的Retina显示屏。但图片本身是完全透明的,看不到任何内容。我正在使用这个网站解码base64并保存文件,我已经试过另外两个网站来确定是否是该网站的问题。 http://www.motobit.com/util/base64-decoder-encoder.asp 编辑: 我刚刚尝试了下面的代码,以确定问题是出在我的图片、Bezier或保存为bas64上。这段代码很好用,所以我认为这是我的Bezier出了问题。
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!)
UIBezierPath
上。 - Johnston