Вопрос

По сути, я хочу автоматически создать мозаичное изображение из набора исходных изображений, а затем сохранить его в фотоальбоме пользователя.Мне не удалось нарисовать кучу маленьких UIImage в один большой UIImage.Как лучше всего это сделать?В настоящее время я использую UIGraphicsBeginImageContext() и [UIImage drawAtPoint] и т. д.Все, что я получаю, это черный квадрат размером 512x512.Как мне следует это делать?Я ищу CGLayer и т. д.кажется, есть много вариантов, но ни один из них не работает особенно легко.

Позвольте мне действительно вставить свой код:

CGSize size = CGSizeMake(512, 512);
UIGraphicsBeginImageContext(size);
UIGraphicsPushContext(UIGraphicsGetCurrentContext());
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        UIImage *image = [self getImageAt:i:j];
        [image drawAtPoint:CGPointMake(i*128,j*128)];
    }
}
UIGraphicsPopContext();
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil);

Должен отметить, что на самом деле вышеизложенное нет что именно происходит в моем коде.Что на самом деле происходит, так это то, что я вызываю каждую строку до и включительно в UIGraphicsPushContext, затем в таймере анимации я медленно увеличиваю отрисовку и рисую ее в контексте.Затем, после того, как все будет готово, я вызываю все, начиная с UIGraphicsPopContext.

Это было полезно?

Решение 2

Сделать именно то, что я хотел сделать...

Сделайте свой GLView таким же большим, как и все, что вам нужно.Также убедитесь, что glOrtho и область просмотра имеют правильный размер.Затем просто нарисуйте все, что хотите, где хотите, и сделайте один снимок экрана OpenGL.Тогда вам не нужно беспокоиться о объединении в один UIImage за несколько проходов рендеринга OpenGL, что, несомненно, и стало причиной моей проблемы.

Другие советы

О, тогда вы можете просто сохранить экранное представление после того, как оно было отображено на экране:

 UIGraphicsBeginImageContext(myBigView.bounds.size);
    [view drawRect:myBigView.bounds];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

вы сохраняете его обратно в изображение?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top