2009-07-28 8 views
12

Ich habe eine kleine IPhone App, an der ich arbeite und ich zeige ein Bild mit einem UIImageView. Ich skaliere es im Aspect Fit-Modus. Ich möchte das Bild ohne Interpolation/Glättung vergrößern lassen (ich möchte, dass es pixelig aussieht). Gibt es eine Möglichkeit, dieses Verhalten zu ändern?UIImageView Skalierung/Interpolation

Eine etwas allgemeinere Frage wäre, kann ich meinen eigenen Skalierungsalgorithmus implementieren, oder gibt es andere integrierte, die ich auswählen kann?

Antwort

20

Sie müssten die magnificationFilter Eigenschaft auf die Ebene des Hinblick auf die auf den nächsten Nachbarn Filter:

[[view layer] setMagnificationFilter:kCAFilterNearest] 
+1

als rekle Antwort sagt, stellen Sie sicher, dass Sie # Import hinzufügen wenn setMagnificationFilter mit: –

+1

Das ist großartig und mein Ziel erreicht, aber ich möchte fragen, wenn ich 'Vergrößerungsfilter = kCAFilterNearest', werden die großen und scharfen Pixel wirklich die Originalpixel des Bildes vergrößert oder nur durch eine Bearbeitung erzeugt? Danke! – Suge

-2

Es gibt zwei Möglichkeiten, wie Sie dies tun können. Sie können entweder einen Neuskalierungsalgorithmus ohne Interpolation implementieren. Wenn dies zu viel Arbeit ist, können Sie das Bild in einer anderen Anwendung wie gimp oder photoshop neu skalieren. Dies funktioniert nur, wenn Sie die Größe in Ihrer Anwendung dynamisch ändern müssen.

5

Stellen Sie sicher, dass die Zeile

#import <QuartzCore/CALayer.h> 

Am Anfang der Datei enthalten, die umfassen Aufruf von setMagnificationFilter oder es wird nicht kompiliert.

+0

Und fügen Sie Ihrem Projekt QuartzCore-Framework hinzu (Groups & Files -> Hinzufügen -> ExistingFrameworks ... -> QuartzCore.framework -> Add). – suda

0

Swift

imageView.layer.magnificationFilter = kCAFilterNearest 
imageView.layer.shouldRasterize = true