Este es uno de esos trucos de macOS que llevan con nosotros desde casi el principio de OS X, y de los que hemos hablado desde hace años (por ejemplo, enlazamos a un artículo de 2016). Pero nunca está demás volver a repasar qué es Quartz y cómo usarlo.
Core Graphics proporciona filtros de imagen predeterminados para efectos especiales rápidos. Aquí se explica cómo guardar archivos de imagen en Vista previa para macOS con efectos.
El subsistema de imágenes 2D Core Graphics (Quartz) de Apple proporciona una API consistente y de alto rendimiento para crear, guardar y manipular gráficos. También es responsable de dibujar la mayoría del texto en las plataformas de Apple (Core Text).
El texto se puede dibujar por Quartz utilizando la precisión de subpíxeles y el anti-aliasing (suavizando) incluso si una pantalla en particular no puede mostrar el texto a resolución computarizada completa.
Quartz es vasto y cubre casi todos los aspectos de las imágenes 2D en los sistemas operativos de Apple, incluidos iOS y macOS. Quartz es uno de los marcos más antiguos de Apple y debutó con el propio Mac OS X.
El modelo de imágenes se basa en la composición, en la que varias capas gráficas se pueden combinar con transparencia (alfa), manipular, transformar, guardar, imprimir o copiar en una pantalla.
Quartz Composer es responsable del ensamblaje y manipulación de imágenes, combinando imágenes y rotando, aplicando transformaciones o dando forma a imágenes. Una vez que se ensambla una imagen final, el motor de visualización mueve (o «blits») la imagen a una pantalla o impresora.
En el caso de macOS, el servidor de ventanas maneja además la tala y ocultación de imágenes para garantizar que las imágenes de visualización destinadas a ventanas específicas permanezcan solo en esas ventanas.
El propio servidor de ventanas de macOS utiliza Quartz Composer al ensamblar el contenido de las ventanas.
Por razones de rendimiento, el servidor de ventanas sabe cómo recortar imágenes para que solo se dibujen las partes visibles en las ventanas. Así es como, por ejemplo, cuando haces clic entre ventanas en macOS, partes de las ventanas se oscurecen detrás de otras ventanas.
Al recortar imágenes en el momento de visualización, Window Server mejora enormemente el rendimiento de renderizado porque no tiene que dibujar todo el contenido de una ventana si parte de ella está oscurecida.
Cuando Mac OS X se lanzó por primera vez en 2000, el motor gráfico y los marcos eran los más avanzados en la industria informática.
Los dispositivos iOS funcionan de la misma manera que los Macs, excepto que no usan un servidor de ventanas dedicado como lo hace macOS. Ambos usan el mismo marco y API de Quartz.
Casi todo en los dispositivos Mac e iOS se dibuja usando Quartz. Esto incluye imágenes individuales y archivos de imagen, así como la mayor parte de la propia macOS y el contenido de sus ventanas.
En Mac OS X Tiger 10.4, Apple introdujo Quartz 2D Extreme que permite descargar gráficos de Quartz en una GPU dedicada. En 10.5, Apple cambió el nombre de Quartz Extreme a QuartzGL.
Quartz Composer también utiliza QuartzGL para acelerar la representación si hay una GPU dedicada disponible. Apple tuvo una aplicación llamada Quartz Composer que ahora ha sido discontinuada.
Basado en la geometría
Lo que ves dibujado en la pantalla o impreso es solo una aproximación de los gráficos que Quartz realmente calcula. Quartz utiliza modelos matemáticos por detrás para calcular realmente los gráficos que va a dibujar, a menos que los gráficos sean una imagen de mapa de bits que exista como una página de píxeles pre-renderizados.
Los modelos matemáticos de tales gráficos a veces se llaman gráficos vectoriales porque se calculan utilizando la geometría primero, independientemente de cómo se mostrarán o imprimirán.
Los gráficos vectoriales tienen la gran ventaja de ser escalables a cualquier tamaño. Para hacer una imagen más grande o más pequeña, simplemente se vuelve a calcular la imagen en una escala diferente, o se aplica una transformación de escala antes de que se dibujen los gráficos.
Las transformaciones son ajustes matemáticos aplicados a las imágenes para cambiar su tamaño o forma. Cuando rotas o deformas una imagen en un programa de edición de imágenes, o cuando manipulas un objeto 3D en el espacio, estás aplicando una transformación al modelo que luego se vuelve a dibujar.
Las transformaciones también se pueden aplicar a imágenes de mapa de bits, aunque esto generalmente resulta en cierta cantidad de distorsión en la imagen original.
Las curvas Bezier describen gráficos vectoriales curvos, generalmente con un punto de partida, puntos de control, uno o más grados de curvatura y puntos de conformación o «mangos» que se pueden usar para alterar la forma de las curvas. Si alguna vez ha utilizado una aplicación de dibujo vectorial como Adobe Illustrator, probablemente haya utilizado curvas de Bezier para cambiar la forma de los objetos.
Las tipografías, por ejemplo, utilizan la geometría de curvas de Bezier y el dibujo vectorial para describir sus contornos (trazos) que dibujan cada carácter individualmente. Cuando cambias una fuente o un tamaño de fuente para el texto de un documento en macOS, vuelves a aplicar un nuevo cálculo para cada carácter dibujado.
Cada archivo de fuente en macOS contiene instrucciones sobre cómo dibujar cada carácter de texto en un tipo de letra determinado.
Servicios de Quartz
Quartz contiene otro subsistema llamado Quartz Display Services (QDS), que se ocupa principalmente de las propias pantallas de hardware. Originalmente una API muy pequeña, QDS ahora se ha expandido a docenas de API que manejan:
- Pantallas de localización e identificación
- Cambiar las propiedades de visualización
- Configuración de todas las configuraciones de la pantalla a la vez
- Capturando una pantalla
- Contenido de transmisión de pantallas
- Usar efectos de desvanecimiento
- Conclusión de la duplicación de la pantalla
- Aplicación de gama y corrección para el color
- Recibir actualizaciones de los cambios de visualización
Si alguna vez has cambiado la resolución de tus monitores o pasado de la barra de menús del Mac a otra pantallazo en la app Ajustes del sistema, has usado QDS.
Las aplicaciones de macOS deben incluir código para recibir notificaciones de cambios en las pantallas, de modo que puedan reconfigurar sus ventanas y el contenido de estas según las nuevas propiedades de la pantalla. La pantalla conectada que contiene la barra de menús de macOS se llama Pantalla Principal (Main Display). macOS asigna un identificador de pantalla (DisplayID), un valor de 32 bits (CGDirectDisplayID), a cada pantalla al iniciarse.
Tipos de datos
Quartz define su propio conjunto de primitivas de dibujo para realizar cálculos gráficos (descritas en la documentación de Core Graphics). Estas primitivas incluyen desde números enteros y de punto flotante individuales, formas geométricas como puntos, tamaños y rectángulos, hasta trayectorias, vectores y transformaciones.
También existen contextos de pantalla, imágenes (para bitmaps), capas, además de colores y fuentes. Un contexto de pantalla se define como un entorno gráfico en el que se puede dibujar. Por lo general, cada pantalla tiene un contexto de dibujo, aunque también puede haber contextos adicionales fuera de la pantalla y contextos de composición. Además, es posible modificar las propiedades de los contextos de dibujo para alterar el aspecto de su contenido cuando el contexto se redibuja.
La mayoría de estos tipos de datos se componen de tipos individuales simples. Por ejemplo, un CGPoint en Quartz se define como una estructura que contiene dos números de punto flotante de doble precisión: una coordenada X y una coordenada Y. Un CGPoint describe cualquier punto individual en una pantalla o contexto. Un CGRect está compuesto por otros dos tipos de Quartz: un CGPoint (punto inicial) y un CGSize (dimensiones). El punto inicial para dibujar en la mayoría de los sistemas gráficos 2D se denomina origen.
Algunos sistemas 2D miden las distancias desde la esquina superior izquierda y hacia la derecha y hacia abajo, otros desde la esquina inferior izquierda y hacia la derecha y hacia arriba.
Quartz también define capas (CGLayer
) en las que se puede dibujar individualmente, combinar y animar.
Otro framework de Apple llamado Core Animation puede usar capas (CALayer
) para animar varias capas gráficas juntas a la vez sin problemas.
Archivos PDF
Los archivos PDF se gestionan de forma separada de Quartz en las plataformas de Apple, excepto en su renderizado final para pantalla o impresión. Esto se debe a que el PDF fue originalmente un estándar de Adobe que utilizaba PostScript para renderizar. Las computadoras NeXT tenían un sistema similar basado en PostScript llamado Display Postscript, que empleaba la tecnología de Adobe tanto para la visualización como para el renderizado en impresión. PostScript también utilizaba gráficos vectoriales en sus cálculos gráficos para proporcionar un dibujo suave a cualquier escala.
Aunque el PDF no es una tecnología de Apple, Quartz ofrece un tipo de dato para PDFs llamado CGPDFDocument. Este tipo de dato obtiene su contenido de otro tipo de Quartz denominado CGDataProvider. Usando estos dos tipos de datos, puedes crear una representación de un documento PDF para su visualización o impresión. Además, puedes inicializar un CGPDFDocument directamente desde un archivo o URL.
Quartz también incluye el tipo CGPSConverter, que permite convertir directamente entre archivos PDF y código PostScript heredado. Algunas impresoras más antiguas tienen PostScript integrado en su memoria ROM, lo que les permite recibir e imprimir archivos PostScript y PDF.
Apple cuenta con varios frameworks adicionales para la manipulación de imágenes y archivos, entre ellos ImageKit, PDFKit, Quartz Composer (ahora en gran medida obsoleto) y Quick Look.
Quartz y Vista previa
La aplicación Vista de macOS es esencialmente una aplicación de renderizado de Quartz y PDF, que también sabe cómo mostrar imágenes con mapa de bits.
Preview utiliza Quartz para componer y mostrar archivos e imágenes de la misma manera que lo hace macOS. Puede realizar todos los comandos de dibujo y transforma cualquier otra aplicación de Quartz.
También sabe cómo renderizar archivos PDF y PostScript directamente en ventanas, y cómo enviarlos a impresoras láser o de inyección de tinta. Cuando abres un archivo PDF en Vista previa, utiliza la API de Quartz para renderizar los comandos de dibujo PDF que se dibujarán en la pantalla en el sistema nativo de Apple.
Quartz y filtros
Una vez que todo está listo para su visualización, se pueden aplicar Quartz Filters (CIFilter) para usar efectos especiales al mostrar, guardar o imprimir gráficos y archivos de imagen. También se pueden aplicar filtros de imagen a archivos PDF mediante la tecnología ColorSync de Apple. Quartz ofrece un conjunto estándar de filtros predefinidos que esencialmente aplican efectos fotográficos familiares a las imágenes, aunque también es posible definir y aplicar filtros personalizados.
macOS incluye un Filter Manager, que se utiliza para agregar, eliminar y gestionar filtros de imagen. Los CIFilters pueden ser complejos, pero dependen solo de dos tipos de datos de Quartz: CIImage y CIContext. Un CIImage es esencialmente un generador de imágenes que toma una imagen existente como entrada o la dibuja en un CIContext para producir una nueva imagen. No necesitas preocuparte por cómo se modifican las imágenes mediante CIFilter, ya que Apple incorpora todo ese código: simplemente seleccionas el filtro que deseas usar, indicas una imagen existente o un contexto de dibujo para modificar, y Quartz se encarga del resto.
Esto también estandariza los efectos de los filtros para que sean consistentes en el software de las plataformas Mac, siempre que se use la API de Quartz. Después de aplicar el filtro seleccionado, se genera una nueva CIImage lista para su uso. Además, puedes aplicar un CIColor a una imagen para cambiar su tonalidad general.
Apple también proporciona filtros integrados para cambios geométricos, composición, gradientes, efectos de lente y más. Todos los filtros integrados están agrupados por categorías, utilizando constantes que comienzan con “CI”. Un grupo llamado CICategoryStylize ofrece varias docenas de formas de hacer que las imágenes se vean como fotos, impresiones de periódicos, cómics o vitrales. Probablemente has visto estos tipos de efectos en aplicaciones como Adobe Photoshop.
Actualmente hay cientos de filtros de Quartz definidos por Apple, que se detallan en el archivo de encabezado del SDK de Apple, CIFilterBuiltins.h. Sin embargo, una forma más práctica de explorar todos los tipos de filtros es visitar el proyecto de documentación de referencia de filtros de Core Image de terceros, creado por Noah Gilmore. Gilmore también ofrece una aplicación de referencia de Core Image de cinco estrellas para iPad en la App Store llamada CIFilter.io ($5), que detalla los filtros integrados de Apple. Tanto el sitio como la aplicación muestran en qué versiones de iOS y macOS está disponible cada filtro.
Aplicación de filtros en la vista previa
Desafortunadamente, la aplicación Vista previa de macOS todavía no es un editor de imágenes con todas las funciones. Si bien puede hacer algunas operaciones rudimentarias como el tamaño y la rotación, actualmente no admite efectos de filtro generales.
Esto es una pena, ya que Apple ya suministra todos los filtros en el sistema operativo. Actualmente, todo lo que se puede hacer en Vista previa es dibujar líneas y formas básicas, ajustar colores y agregar texto.
Sin embargo, lo que sí puedes hacer en Vista previa es aplicar un filtro al guardar un archivo, pero solo para un pequeño conjunto selecto de filtros predefinidos. De hecho, este conjunto es un conjunto predefinido de filtros ColorSync Core Image que viven en /Library/ColorSync/Profiles y se envían con macOS.
Para utilizarlos, ve a Archivo->Guardar o Guardar como, y luego desde el menú Filtro Quartz, selecciona uno de los filtros disponibles (si el formato de archivo lo admite):
Haz clic en el botón Guardar para guardar el archivo.
Vista previa aún no admite la aplicación de filtros a todos los tipos de archivos al guardar, incluido PNG. La mayoría de los filtros proporcionados en la hoja de vista previa de guardado son para convertir a blanco y negro, escala de grises, sepia, cambiar la ligereza y optimizar el tamaño del archivo.
Para los PDF, también hay un filtro personalizado para guardar archivos como documento PDFX-3, que se utiliza principalmente para la impresión profesional.
Si bien este conjunto es limitado, es una manera rápida y fácil de modificar archivos de imagen al guardar. Con suerte, algún día Apple ampliará el conjunto para incluir más filtros predefinidos y más tipos de archivos.
Si estás interesado en la programación de Quartz en las plataformas de Apple, consulta el documento Guía de programación 2D de Quartz.
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.