2016-09-23 101 views
2
import UIKit 

let image = UIImage(named: "sample.png") 

// Process the image! 

var myRGBA = RGBAImage(image: image!) 

let avgRed = 122 
let avgGreen = 113 
let avgBlue = 51 

for y in 0..<myRGBA?.height { 
    for x in 0..<myRGBA?.width { 
     let index = y * (myRGBA?.width)! + x 
     var pixel = myRGBA?.pixels[index] 
     let redDiff = Int(pixel.red) - avgRed 
     if (redDiff>0) 
     { 
      pixel.red = UInt8(max(0, min(255,avgRed + redDiff * 5))) 
      myRGBA?.pixels[index] = pixel 
     } 
    } 
} 

let newImage2 = myRGBA?.toUIImage() 

錯誤是說 - >二進制運算符'.. <'不能被應用於類型'Int'和'Int?我試圖讓圖像處理器迅速,但得到一個錯誤

的RGBAImage是沒有任何錯誤,運行平穩

我寫的代碼在迅速3

回答

0

我改變了一些東西下面的代碼適用於我

import UIKit 

let image = UIImage(named: "sample.png") 

// Process the image! 

var myRGBA = RGBAImage(image: image!) 

let avgRed = 122 
let avgGreen = 113 
let avgBlue = 51 

if let unwrapped = myRGBA { 
    for y in 0..<unwrapped.height { 
     for x in 0..<unwrapped.width { 
      let index = y * (myRGBA?.width)! + x 
      var pixel = myRGBA?.pixels[index] 
      let redDiff = Int((pixel?.red)!) - avgRed 
      if (redDiff>0) 
      { 
       pixel?.red = UInt8(max(0, min(255,avgRed + redDiff * 5))) 
       myRGBA?.pixels[index] = pixel! 
      } 
     } 
    } 
} 

let newImage2 = myRGBA?.toUIImage() 
0

我想你只需要現在解開您的選購

import UIKit 

let image = UIImage(named: "sample.png") 

// Process the image! 

var myRGBA = RGBAImage(image: image!) 

let avgRed = 122 
let avgGreen = 113 
let avgBlue = 51 
if let unwrapped = myRGBA?{ 
for y in 0..< unwrapped.height { 
    for x in 0..< unwrapped.width { 
     let index = y * (myRGBA?.width)! + x 
     var pixel = myRGBA?.pixels[index] 
     let redDiff = Int(pixel.red) - avgRed 
     if (redDiff>0) 
     { 
      pixel.red = UInt8(max(0, min(255,avgRed + redDiff * 5))) 
      myRGBA?.pixels[index] = pixel 
     } 
    } 
} 
} 
let newImage2 = myRGBA?.toUIImage() 
+0

與上面的代碼我有這些錯誤 - > 1預期「{」開始的for-each循環,2斜撐語句塊是一個未使用的封閉件主體,3使用未解決的識別符「Y」,4使用未解決的識別符 –

+0

的「X」,並且這一個 - 「?」>必須緊跟呼叫,成員查詢或下標 –

0

原因的錯誤:

可選比較默認情況下不會在雨燕3.0的支持。

因此,您需要過載如果您要將代碼遷移到Swift 3.0,您自己或swift migrator上的比較運算符將爲您執行此操作。

重載方法是這樣的:

fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool { 
    switch (lhs, rhs) { 
    case let (l?, r?): 
    return l < r 
    case (nil, _?): 
    return true 
    default: 
    return false 
    } 
} 

fileprivate func > <T : Comparable>(lhs: T?, rhs: T?) -> Bool { 
    switch (lhs, rhs) { 
    case let (l?, r?): 
    return l > r 
    default: 
    return rhs < lhs 
    } 
}