2017-06-27 2 views
0

Ich benutze calyer renderInContext, um ein Capture zu ImageView zu erstellen, aber ich finde, es verliert an Qualität. Wo lag ich falsch?iOS: calyer renderInContext verwenden, um Bildqualität zu erfassen Qualität zu verlieren

Code: enter image description here

Ergebnis: enter image description here

edit:

das obige Bild von einem Imageview mit contentMode von aspectFill und ClipToBounds angezeigt wird.

Das Bild unten ist Prozess durch den Code, den ich gebe, eigentlich möchte ich nur das Bild auf die gleiche Größe wie die ImageView mit ContentMode von aspectFill Clip, so brauche ich nicht clipToBounds zu verursachen offscreen-rendering.

+0

Wo ist der Qualitätsverlust? Die Qualität des unteren Bildes ist tatsächlich besser (das Herunterskalieren ist viel glatter). – deadbeef

+0

Versuchen Sie, die Interpolationsqualität Ihres Kontexts zu verringern, wenn Sie dasselbe "scharfe" Ergebnis des oberen Bildes erzielen möchten. – deadbeef

+0

Auch wenn Sie die Größe eines Bildes ändern, sollten Sie direkt mit dem Bild selbst arbeiten (mit seiner 'draw'-Methode), anstatt die Ebene des imageView zu zeichnen. – deadbeef

Antwort

0

nach dem Kommentar von @deadbeef, Die Qualität der unteren Bild ist eigentlich besser (Downscale ist viel glatter), die ich nicht weiß warum, und wie er vorschlagen, versuchen Sie die Interpolation Qualität Ihres Kontextes wenn senken Sie möchten das gleiche "scharfe" Ergebnis des oberen Bildes erzielen.

context.interpolationQuality = .low

habe ich es zu niedrig, und es funktionierte!

Verwandte Themen