1
這裏的問題是改變圖像的像素從一個到另一個顏色與轉換SWIFT 2.3 SWIFT的3
class func processPixelsInImage(inputImage: UIImage,defaultColor:RGBA32,filledColor:RGBA32,currentValue:CGFloat,maxValue:CGFloat) -> UIImage? {
guard let context = CGBitmapContextCreate(nil, width, height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo) else {
print("unable to create context")
return nil
}
CGContextDrawImage(context, CGRectMake(0, 0, CGFloat(width), CGFloat(height)), inputCGImage)
let pixelBuffer = UnsafeMutablePointer<RGBA32>(CGBitmapContextGetData(context))
var currentPixel = pixelBuffer
let prevPixel = pixelBuffer
for i in 0 ..< Int(CGFloat(width)/maxValue*currentValue) {
for j in 0 ..< Int(height) {
if currentPixel.memory.color != 0 {
if currentValue == maxValue {
currentPixel.memory = defaultColor
}else {
currentPixel.memory = filledColor
}
}
currentPixel = prevPixel
currentPixel += (i+width*j)
}
}
let outputCGImage = CGBitmapContextCreateImage(context)
let outputImage = UIImage(CGImage: outputCGImage!, scale: inputImage.scale, orientation: inputImage.imageOrientation)
return outputImage
}
}
當我試圖將其轉換爲SWIFT 3
let pixelBuffer = UnsafeMutablePointer<RGBA32>(CGBitmapContextGetData(context))
這個代碼線我必須更改UnsafeMutablePointer是
let pixelBuffer = UnsafeRawPointer(context.data)
並因爲在currentPixel對象內存屬性不是基礎d 如何獲得像素內存?