2014-02-20 1 views
1

Мне нравится преобразовывать файл .cpbitmap в формат изображения, который может отображаться в UIImageView. Есть ли способ сделать это в Objective-C? Приложение будет работать на jailbroken Devices, поэтому это не имеет большого значения.Как преобразовать .cpbitmap в удобочитаемое изображение (png, jpg, jpeg ...)

+0

Вы получили это от работы? – newenglander

+0

Нет, не совсем ... –

+1

Я сомневаюсь, что вы все еще считаете, что это было более года назад, но вот мой код _working_: https://github.com/ZaneH/unsplashwallpaper/blob/master/Listener.xm#L185 –

ответ

3

Импорт частного AppSupport.framework и объявить этот

CFArrayRef CPBitmapCreateImagesFromData(CFDataRef cpbitmap, void*, int, void*); 

Эта функция возвращает массив CGImageRef объектов. Первый аргумент - данные из файла .cpbitmap. Другие аргументы мне неизвестны (один из них, вероятно, CFAllocatorRef), поэтому я проверил, как iOS вызывает эту функцию и использует те же значения. Вот как я это сделал

CPBitmapCreateImagesFromData([NSData dataWithContentsOfFile:@"LockBackground.cpbitmap"], NULL, 1, NULL); 
+0

Спасибо за ваш ответ. У меня много вопросов. Где я должен объявить «CFArrayRef CPBitmapCreateImagesFromData (CFDataRef cpbitmap, void *, int, void *);», следует объявить его в файле заголовка AppSupport.framework? И другой вопрос: где вы получили AppSupport.framework, когда я импортирую, если отсюда: https://github.com/nst/iOS-Runtime-Headers. Я получаю множественные ошибки. Не могли бы вы объяснить мне немного больше? –

+0

Вы можете объявить его в любом месте в своем проекте. Затем вам нужно импортировать фреймворк. Поскольку это частная структура, вам нужно найти ее с помощью Finder и перетащить ее в папку «Frameworks» вашего проекта. Рамки можно найти здесь '/ Applications/Xcode.app/Содержание/Разработчик/Платформы/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/AppSupport.framework' – creker

+0

Привет, это помогло мне много. Извините за вопрос, но как вы получите UIImage? –

1

Я также хотел бы преобразовать HomeBackground.cpbitmap/LockBackground.cpbitmap из библиотеки/трамплин.

Следующие работали для меня: @creker: Спасибо!

CFArrayRef CPBitmapCreateImagesFromData(CFDataRef cpbitmap, void*, int, void*); 
CFArrayRef someArrayRef = CPBitmapCreateImagesFromData((__bridge CFDataRef)([NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"LockBackground" ofType:@"cpbitmap"]]), NULL, 1, NULL); 
NSArray *array = (__bridge NSArray*)someArrayRef; 
UIImage *test = [UIImage imageWithCGImage:(__bridge CGImageRef)(array[0])]; 

Я добавил точку останова после последней строки и извлек изображение с помощью XCode -> test -> Preview.