Портирование демо Quartz 2d Python на чистую Core Graphics C

1

Позвольте мне вначале отметить, что я абсолютно не знаю, что я делаю с 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, указанный в приведенной выше ссылке?

Теги:
core-graphics
quartz-2d

1 ответ

1
Лучший ответ
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. Там есть такой документ для каждой из большинства фреймворков.

  • 0
    Это была глупая демоверсия в Core grahpics. Я думаю, что я нашел то, что искал в изображении ввода / вывода ... developer.apple.com/mac/library/documentation/GraphicsImaging/… . Спасибо, что заметили это, хотя!
  • 0
    Да, CGImageDestination и CGImageSource являются двумя классами платформы ImageIO, хотя они также считаются частью Core Graphics.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню