2016-11-04 144 views
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 如何獲得像素內存?

回答