Ich schrieb den Code, um den Bildern Filter hinzuzufügen. Hier ist der CodeNSInvalidArgumentException beim Anwenden des Filters
func applyFilter(index: Int){
print("Applying Filter....")
//let context = CIContext()
// 1
//below two lines will refer the code to GPU instead of cpu
let openGLContext = EAGLContext(api: .openGLES2)
let context = CIContext(eaglContext: openGLContext!)
let filter = CIFilter(name: pickerFilters[index])!
// 2
//filter.setValue(0.8, forKey: kCIInputIntensityKey)
let image = selectedImageArray[selectedIndex] // 3
filter.setValue(image, forKey: kCIInputImageKey)
let result = filter.outputImage // 4 this line and the below line are problematic
let cgImage = context.createCGImage(result!, from: (result?.extent)!) // 5
// //load this image to imageview
imageView.image = UIImage(cgImage: cgImage!)
print("Filter Applied")
}
Der Code gibt mir einen Fehler, wenn ich die Collection klicken, um einen Filter zu wählen. Was ich dachte, dass die Ausnahme auf jeder dieser beiden Linien ist
let result = filter.outputImage // 4 this line and the below line are problematic
let cgImage = context.createCGImage(result!, from: (result?.extent)!) // 5
, wenn ich diese beiden Zeilen entfernen Sie dann das Programm funktioniert gut, aber wie Sie sehen können Filter nicht angewendet werden. Bitte lassen Sie mich wissen, was ich falsch mache? Dank
bearbeiten Es sagt etwas wie Unbekannter Selektor an Instanz gesendet .... Im Folgenden ist das Detail dessen, was im Ausgabefenster erzeugt wird, wenn Ausnahme occurrs.
Applying Filter....
2017-03-04 21:54:28.058 AVFrameWorkPractice[1223:31319] -[UIImage extent]: unrecognized selector sent to instance 0x600000095720
2017-03-04 21:54:28.145 AVFrameWorkPractice[1223:31319] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage extent]: unrecognized selector sent to instance 0x600000095720'
*** First throw call stack:
(
0 CoreFoundation 0x000000010d693d4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010d0f521e objc_exception_throw + 48
2 CoreFoundation 0x000000010d703f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x000000010d619005 ___forwarding___ + 1013
4 CoreFoundation 0x000000010d6a6a08 __forwarding_prep_1___ + 120
5 CoreImage 0x000000010db9f9a4 -[CICMYKHalftone outputImage] + 336
6 AVFrameWorkPractice 0x000000010bc49e7e _TFC19AVFrameWorkPractice20CustomEffectsCreator11applyFilterfT5indexSi_T_ + 1038
7 AVFrameWorkPractice 0x000000010bc4962b _TFC19AVFrameWorkPractice20CustomEffectsCreator14collectionViewfTCSo16UICollectionView15didSelectItemAtV10Foundation9IndexPath_T_ + 1227
8 AVFrameWorkPractice 0x000000010bc496a7 _TToFC19AVFrameWorkPractice20CustomEffectsCreator14collectionViewfTCSo16UICollectionView15didSelectItemAtV10Foundation9IndexPath_T_ + 87
9 UIKit 0x000000010e9526e4 -[UICollectionView _selectItemAtIndexPath:animated:scrollPosition:notifyDelegate:] + 702
10 UIKit 0x000000010e97d4d2 -[UICollectionView touchesEnded:withEvent:] + 649
11 UIKit 0x000000010e230f6b forwardTouchMethod + 348
12 UIKit 0x000000010e231034 -[UIResponder touchesEnded:withEvent:] + 49
13 UIKit 0x000000010e230f6b forwardTouchMethod + 348
14 UIKit 0x000000010e231034 -[UIResponder touchesEnded:withEvent:] + 49
15 UIKit 0x000000010e54b304 _UIGestureEnvironmentSortAndSendDelayedTouches + 5645
16 UIKit 0x000000010e545fcb _UIGestureEnvironmentUpdate + 1472
17 UIKit 0x000000010e5459c3 -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 521
18 UIKit 0x000000010e544ba6 -[UIGestureEnvironment _updateGesturesForEvent:window:] + 286
19 UIKit 0x000000010e08ac1d -[UIWindow sendEvent:] + 3989
20 UIKit 0x000000010e0379ab -[UIApplication sendEvent:] + 371
21 UIKit 0x000000010e82472d __dispatchPreprocessedEventFromEventQueue + 3248
22 UIKit 0x000000010e81d463 __handleEventQueue + 4879
23 CoreFoundation 0x000000010d638761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
24 CoreFoundation 0x000000010d61d98c __CFRunLoopDoSources0 + 556
25 CoreFoundation 0x000000010d61ce76 __CFRunLoopRun + 918
26 CoreFoundation 0x000000010d61c884 CFRunLoopRunSpecific + 420
27 GraphicsServices 0x0000000112734a6f GSEventRunModal + 161
28 UIKit 0x000000010e019c68 UIApplicationMain + 159
29 AVFrameWorkPractice 0x000000010bc4be4f main + 111
30 libdyld.dylib 0x0000000112d2868d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(LLDB)
Jedes Ausrufezeichen kann die App zum Absturz bringen. Wenn eine Methode 'nil' zurückgibt, verwenden Sie die optionale Bindung. Wenn eine Methode "nil" zurückgeben kann, aber nicht sollte, handelt es sich um einen Design (Entwickler) -Fehler. – vadian
Sind Sie sicher, dass Ihr 'selectedImageArray''CIImages' enthält? Der Exception-Dump scheint einen 'UIImage' für' kCIInputImageKey' gesetzt zu haben. – OOPer
Nein, es enthält UIImagages. Sollte ich sie in CImage umwandeln? Werde das versuchen. Vielen Dank. –