2013-11-18 5 views
0

Возможные Дубликат: Saving two Overlapping UIImageСохранить два перекрывающихся изображений в одном, IOS

В UIScrollView, я добавил свой UIImageView и есть кадр слоя над ним. Я хочу сохранить окончательное изображение на экране после редактирования. Ответ, данный на вышеупомянутый вопрос, работает, но по мере того, как он рисует фрейм, результат ухудшает качество моего изображения.. Поэтому я ищу решение, которое сохраняет мое изображение в хорошем разрешении. Пожалуйста, помогите мне в этом, спасибо заранее!

ответ

1

Попробуйте с этим кодом:

//merge two images for this code 

UIImage *bottomImage =imgview.image; //background image ////1st image 
UIImage *image  = imgProfile.image; //foreground image///2nd image 

CGSize newSize = CGSizeMake(270, 330); // set your image rect 
UIGraphicsBeginImageContext(newSize); 

// Use existing opacity as is 
[bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];///1st image set frame 

// Apply supplied opacity if applicable 

[image drawInRect:CGRectMake(81,218,97,78) blendMode:kCGBlendModeNormal alpha:1]; //2nd image set frame on bottom image with alpha value 

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
NSData *imageData = UIImagePNGRepresentation(newImage); 
[imageData writeToFile:savedImagePath atomically:NO]; 

Вы можете увидеть вновь созданный файл в директории документов приложения.

+0

Мне не жалко, почему вы использовали эти два утверждения: CGSize newSize = CGSizeMake (270, 330); [image drawInRect: CGRectMake (81,218,97,78) blendMode: kCGBlendModeNormal alpha: 1]; и как ему удастся сохранить изображение в оригинальном разрешении? мог бы объяснить, пожалуйста, – nickAtStack

+0

первый CGSize Newsize определяет размер изображения целого размера, а второй один кадр - это кадр для второго изображения. Средство, в котором вы хотите отобразить второе изображение на нижнем изображении. В некоторых случаях изображение переднего плана маленькое, а затем нижнее изображение, поэтому, если вы хотите отображать небольшое изображение поверх большого изображения сверху или снизу или в центре. В соответствии с вашим требованием установите второй кадр изображения по первому изображению –

+0

, но, как я уже сказал, он не поддерживает фактическое разрешение моего изображения, это приведет к отображению изображения 270X330 .. :( – nickAtStack

Смежные вопросы