iPhone - Управление / редактирование и сохранение изображений (высокое разрешение) - PullRequest
0 голосов
/ 10 декабря 2011

В приложении, над которым я работаю, есть раздел, в котором я позволяю пользователям загружать изображения с помощью UIImagePicker (либо из их библиотеки фотографий, либо с помощью нового снимка), что обычно дает разрешение большого изображения. 2500x2000 ( или что-то подобное)

Теперь я загружаю это изображение в UIImageView (скажем, 400x320). Затем я разрешаю пользователю выбирать другие изображения / объекты для наложения поверх исходного изображения и перемещать их вокруг / изменять их размер, прежде чем они смогут либо сохранить новое изображение в своей библиотеке фотографий, либо отправить его по электронной почте.

Мне было просто интересно, каким будет лучший способ сохранить изображение, чтобы разрешение по-прежнему было таким же высоким, как и у оригинала ... сейчас я просто делаю снимок экрана, но это оставляет меня с небольшим 400x320 изображений.

Спасибо!


Итак, я получил то, что хотел, не уверен, правильно ли я это сделал или нет.

Вот в основном то, что я сделал.

//NEWWIDTH and NEWHEIGHT are double the width and height of the UIImageView that i can edit the pictures in 
CGSize newSize = CGSizeMake(NEWWIDTH, NEWHEIGHT);

UIGraphicsBeginImageContext(newSize);

//i'm resizing myOriginalImage before to how i want
[myOriginalImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];

UIImage *image;

//Here i go through all the other pictures i added on top and go the same drawInRect method for each of them...multiplying each value x,y,height,width by 2

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

1 Ответ

0 голосов
/ 10 декабря 2011

Непонятно, как вы манипулируете своими изображениями.В моем приложении я делаю это с Core Graphics в простом UIView, и я получаю аналогичный эффект, используя разные контексты растрового изображения.На мой взгляд, я делаю это:

- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
[_model render:rect context:context];
}

И когда я хочу отобразить полноразмерное растровое изображение для сохранения, я запускаю тот же код рендеринга с CGBitmapContext.

Это может быть не вариантдля вас, но это работает для меня.

Удачи!

...