Ich habe diese Erweiterung (in obj-c
gefunden und ich habe sie in Swift3
konvertiert), um dieselbe UIImage
, aber grau skaliert zu erhalten:
Ich kann das graue Bild sehen, aber seine Qualität ist ziemlich schlecht ... Das einzige, was ich sehen kann, das mit der Qualität zusammenhängt, ist bitsPerComponent: 8
im Context Contructor. Aber wenn ich mir Apples Dokument anschaue, hier ist, was ich bekomme:
Es zeigt, dass iOS nur 8bpc unterstützt ... Warum kann ich die Qualität nicht verbessern?
Probieren Sie den folgenden Code aus:
Hinweis: Code aktualisiert und Fehler wurden behoben ...
originalImage
ist das Bild, das Sie konvertieren möchten. Antwort 1:
%Vor% Update: CIContext
ist die Core Image-Komponente, die rendering
verarbeitet. Die gesamte Verarbeitung eines Core-Images erfolgt in CIContext
. Dies ist in etwa vergleichbar mit Core Graphics
oder OpenGL context
. Weitere Informationen finden Sie in Apple Doc.
Sie müssen auch folgenden Filter berücksichtigen, der einen ähnlichen Effekt erzeugen kann
CIPhotoEffectMono
CIPhotoEffectTonal
Ausgabe von Antwort 1:
Ausgabe von Antwort 2:
Verbesserte Antwort:
Antwort 2: Automatisches Anpassen des Eingabebilds vor dem Anwenden des coreImage-Filters
%Vor% Hinweis: Wenn Sie das bessere Ergebnis sehen möchten. Sie sollten Ihren Code auf real device
nicht in simulator
...
Joes Antwort als UIImage
extension für Swift 4
funktioniert für verschiedene Maßstäbe korrekt:
Eine Swift 4.0 Erweiterung, die ein optionales UIImage
zurückgibt, um mögliche Abstürze auf der Straße zu vermeiden.
Um dies zu verwenden:
%Vor%