En referencia CGImageDestinationRef de Apple se menciona que It can contain thumbnail images as well as properties for each image.
La parte con las propiedades funciona bien, estableciendo el parámetro properties
al añadir una imagen a la CGImageDestinationRef
, pero no puedo encontrar la manera de agregar la miniatura.añadir a CGImageDestinationRef
Quiero añadir una imagen en miniatura (o pasar directamente de un CGImageSourceRef
) a CGImageDestinationRef
, de tal manera que cuando la imagen resultante se abrió con CGImageSourceRef
puedo usar CGImageSourceCreateThumbnailAtIndex
para recuperar la imagen inicial.
NSDictionary* thumbOpts = [NSDictionary dictionaryWithObjectsAndKeys:
(id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform,
(id)kCFBooleanFalse, (id)kCGImageSourceCreateThumbnailFromImageIfAbsent,
[NSNumber numberWithInt:128], (id)kCGImageSourceThumbnailMaxPixelSize,
nil];
CGImageRef thumb = CGImageSourceCreateThumbnailAtIndex(iSource, 0, (CFDictionaryRef)thumbOpts);
El código anterior devuelve la miniatura de las imágenes que se han almacenado, pero cuando paso a través de la imagen CGImageDestinationRef
, se pierde la vista en miniatura.
¿Hay alguna forma de conservar la miniatura original (o crear una nueva)? CGImageProperties Reference no parece tener ninguna clave donde almacenar la miniatura.
Esto es más o menos El mismo código que agregué en la pregunta para obtener la miniatura. La pregunta pregunta cómo configurar la miniatura en 'CGImageDestinationRef'. –
El diccionario de opciones para CGImageSourceCreateThumbnailAtIndex es para recuperar una miniatura de CGImageDestination. Si se establece kCGImageSourceCreateThumbnailFromImageIfAbsent en kCFBooleanTrue, se creará una miniatura si no está presente. Si está intentando agregar una imagen en miniatura al CGImageDestination, mi fragmento de código y el fragmento que publicó en su pregunta original son irrelevantes. Por favor vea mi respuesta actualizada sobre cómo agregar una miniatura y recuperarla. –
Esto parece una solución decente. Sin embargo, esto solo funcionará para configurar y cargar la miniatura desde mi propia aplicación. Es probable que otras aplicaciones intenten obtener la miniatura almacenada en la memoria caché, no leer la imagen del índice 1. Esto también puede causar otros problemas si el contenedor de la imagen contiene más de 1 imagen. –