Если вам требуется миниатюра размером 1024 (максимальное измерение), вы должны передать 1024, а не 2048. Кроме того, если вы хотите убедиться, что миниатюра создана в соответствии со своими спецификациями, вам следует запросить kCGImageSourceCreateThumbnailFromImageAlways, а не kCGImageSourceCreateThumbnailFromImageIfAbsent , поскольку последний может привести к использованию существующего эскиза, и он может быть меньше, чем вы хотите.
Итак, вот код, который делает то, что вы просите:
NSURL* url = // whatever;
NSDictionary* d = [NSDictionary dictionaryWithObjectsAndKeys:
(id)kCFBooleanTrue, kCGImageSourceShouldAllowFloat,
(id)kCFBooleanTrue, kCGImageSourceCreateThumbnailWithTransform,
(id)kCFBooleanTrue, kCGImageSourceCreateThumbnailFromImageAlways,
[NSNumber numberWithInt:1024], kCGImageSourceThumbnailMaxPixelSize,
nil];
CGImageSourceRef src = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
CGImageRef imref = CGImageSourceCreateThumbnailAtIndex(src, 0, (CFDictionaryRef)d);
// memory management omitted