Я использую CorePlot для рисования разных графиков в моем приложении. Затем я хотел бы сохранить этот график в файле jpg и опубликовать на сайте социальной сети (например, Twitter).
Я прочитал несколько документов и понял, что для меня могут быть полезны следующие методы:
-
CGBitmapContextCreateImage: создание CGImage как копии из растрового графического контекста (т.е. представление, где находится мой график или весь экран - я правильно понял?)
-
CGImageCreateWithImageInRect: я могу скопировать какую-то часть изображения при необходимости
-
[UIImage imageWithCGImage]: преобразование CGImage в объект UIImage
-
UIImageJPEGRепредставление: преобразование моего объекта UIImage в объект NSData jpg, который затем я могу поделиться с моей социальной сетью
-
Первый вопрос: правильно ли я понял последовательность операций, которые я должен выполнить для выполнения своей задачи? Я бы попробовал это сам, но у меня есть проблема, которая приводит к второму вопросу:
-
Откуда я могу получить информацию о графическом контексте в CGBitmapContextCreateImage, если я использую CorePlot? Извините, если это тупой вопрос, но я действительно не дома с графическими контекстами.
-
Большое спасибо за любую помощь заранее! И если я получу все это где-то, я обещаю разместить здесь свой пример кода.
Хорошо, спасибо Брэду, это было очень просто, но, как я и обещал, я должен опубликовать строки:
CPXYGraph *graph=[[CPXYGraph alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
// setting up the graph
// ...
UIImage *newImage=[graph imageOfLayer];
NSData *newPNG=UIImagePNGRepresentation(newImage); // or you can use JPG or PDF
// For test purposes I write the file to the Documents directory, but you can do whatever you want with your new .png file
NSString *filePath=[NSString stringWithFormat:@"%@/graph.png", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];
if([newPNG writeToFile:filePath atomically:YES])
NSLog(@"Created new file successfully");