2010-10-11 3 views
1

Я пытаюсь скопировать uiimage (в конечном счете, я планирую размыть копию). Прямо сейчас скопированное изображение отображается правильно в симуляторе, но при работе на устройстве оно поворачивается на 90 градусов.UIImage копия заканчивается с поворотом

Я использую следующие действия для создания AСкопируйте файл:

CGImageRef cgImage = [sourceImage CGImage]; 

// Сделать новое изображение из CG Reference UIImage * copyOfImage = [[UIImage Alloc] initWithCGImage: cgImage];

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

Заранее спасибо за любую помощь

ответ

0

Согласно документации для UIImage, imageOrientation свойство содержит ориентацию на изображение и он по умолчанию UIImageOrientationUp. Но если изображение имеет какие-либо данные EXIF ​​для ориентации, оно вернет это вместо этого.

imageWithCGImage: (CGImageRef) cgImage и initWithCGImage: (CGImageRef) CGImage (в UIImage) оба будут по умолчанию UIImageOrientationUp ориентации, что может быть неправильным, если изображение/фильм на самом деле был снят в, например, ландшафтный режим.

Но если вы используете версии выше, которые также имеют ориентацию и проходят в sourceImage.imageOrientation, он должен работать.

0

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

Я нашел процесс слишком медленным, и поскольку исходное изображение размыто, вам лучше сделать небольшое изображение, а затем масштабировать его и размывать его оттуда.

Я не тестировал это, так как он немного отличался от моего первоначального проекта.

Этот код использует UIImage + Resize для изменения размера.

//Creates an autoreleased representing the current screen view 
-(UIImage *)currentBlurredImage:(UIImage *)anImage{ 

CGImageRef imageRef = CGImageCreateWithImageInRect([anImage CGImage], bounds); 
UIImage *coppiedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:anImage.imageOrientation]; 

coppiedImage = [viewImage resizedImage:CGSizeMake(120, 80) interpolationQuality:kCGInterpolationLow]; 
coppiedImage = [viewImage blurredCopyUsingGuassFactor:4 andPixelRadius:4]; 
return coppiedImage ; 

}

Размытие было сделано с кодом здесь http://iphonedevelopment.blogspot.com/2010/08/uiimage-blur.html (кредит, где его должное!). Однако я очистил его, столкнулся с кучей памяти и другими проблемами.

http://pastebin.com/MaHvvdim