Позвольте мне вначале отметить, что я абсолютно не знаю, что я делаю с objective-c и развитием Mac (хотя я в порядке с c). Я сделал замечательно простую графическую утилиту на леопарде с привязкой Quartz-2d для python:
http://developer.apple.com/graphicsimaging/pythonandquartz.html
который в основном вводит текстовый файл и записывает хороший файл png (это утилита командной строки). Я был счастлив, как свинья в грязи, пока я не переместил утилиту на наши серверы снежного барса и не обнаружил, что есть проблемы с CoreGraphics и 32-битным питоном на снежном барсе. Некоторые из этих проблем разрешимы, а некоторые нет. Итак, я пытаюсь перенести эту простую утилиту script в objective-c (действительно, я полагаю) и столкнулся с несколькими проблемами. Кто-нибудь еще знает, есть ли хороший пример, почти такой же, как тот, который задан в python и quartz, но все в собственном коде?
Моя основная проблема заключается в написании графического контекста в файле
myBitmapContext = MyCreateBitmapContext (400, 300);
CGContextSetRGBFillColor (myBitmapContext, 1, 0, 0, 1);
CGContextFillRect (myBitmapContext, CGRectMake (0, 0, 200, 100 ));
CGContextSetRGBFillColor (myBitmapContext, 0, 0, 1, .5);
CGContextFillRect (myBitmapContext, CGRectMake (0, 0, 100, 200 ));
CGImageRef myImage = CGBitmapContextCreateImage (myBitmapContext);// 5
CGContextDrawImage(myBitmapContext, myBoundingBox, myImage);// 6
char *bitmapData = CGBitmapContextGetData(myBitmapContext); // 7
// I'd like to write to a file here!
CGContextRelease (myBitmapContext);// 8
if (bitmapData) free(bitmapData); // 9
CGImageRelease(myImage);
MyCreateBitmapContext - это простая функция из apple guide on quartz 2d.
TL; DR У кого-нибудь есть порт C демонстрации python, указанный в приведенной выше ссылке?
CGImageRef myImage = CGBitmapContextCreateImage (myBitmapContext);// 5 CGContextDrawImage(myBitmapContext, myBoundingBox, myImage);// 6
Что? Почему бы вам захватить содержимое контекста в качестве изображения, а затем вернуть это изображение в контекст, из которого вы его получили?
// I'd like to write to a file here!
Сделайте шаг 5, затем подайте это изображение на CGImageDestination.
Вы можете найти Core Reference Reference Collection. Там есть такой документ для каждой из большинства фреймворков.