Ich mache eine Momentaufnahme des Inhalts von NSView
, wende eine CIFilter
an und lege das Ergebnis wieder in die Ansicht. Wenn CIFilter
eine Form der Unschärfe ist, z. B. CIBoxBlur
oder CIGuassianBlur
, ist das gefilterte Ergebnis etwas kleiner als das Original. Da ich dies iterativ mache, wird das Ergebnis immer kleiner, was ich vermeiden möchte.
Das Problem bezieht sich hier , wenn auch in einem etwas anderen Kontext ( Quarz-Komponist). Apple FunHouse
Demo-App wendet eine Guassian blur
an, ohne dass das Bild schrumpft, aber ich habe noch nicht herausgefunden, wie diese App es macht (es scheint OpenGL
zu verwenden, was ich nicht kenne).
Hier ist der relevante Teil des Codes (innerhalb einer NSView
Unterklasse)
Wenn ich einen Farbänderungsfilter wie CISepiaTone
versuche, bei dem keine Pixel verschoben werden, tritt das Schrumpfen nicht auf.
Ich frage mich, ob es eine schnelle Lösung gibt, die nicht in openGL
eintaucht?
Sie verkleinern das Bild nicht, sondern erweitern es (ich denke um 7 Pixel um alle Kanten herum) und die standardmäßige UIView-Skalierung in der Ansicht lässt es so aussehen, als wäre es geschrumpft.
Beschneide deinen CImage mit:
%Vor%Dabei sind die ursprünglichen Grenzen Ihres NSView-Objekts, in das Sie gezeichnet haben, und "Maßstab" ist Ihr [UIScreen mainScreen] -Maßstab].
Tags und Links objective-c xcode macos cocoa core-image