преобразование UIImage в LandscapeRight в iOS

В моем приложении я добавляю разные изображения из библиотеки в массив, а затем они преобразуются в слайд-шоу. Я могу это сделать, но единственная проблема, с которой я сталкиваюсь, - это ориентация разных изображений. Все, что я хочу, это то, что когда пользователь выбирает изображение из библиотеки, перед вставкой в ​​​​массив, его ориентация должна быть проверена, и если оно отличается от альбомного вправо, оно должно быть повернуто в альбомное право. Как я могу это сделать? Более того, повернутые изображения должны быть заполнены по сторонам, т. е. не должно быть черных полей по бокам повернутых изображений.

P.S. Я хочу повернуть UIImage, а не UIImageView, поскольку есть несколько способов повернуть UIImageView, но они не соответствуют моим требованиям.


person Muhammad Jahanzaib    schedule 30.11.2012    source источник


Ответы (1)


Вы можете просто повернуть изображение следующим образом:

UIImage *newImage = [[UIImage alloc] initWithCGImage: myImage.CGImage
                                                 scale: 1.0
                                           orientation: UIImageOrientationRight];

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

if (myImage.size.width < myImage.size.height) {
   // its portrait, do the rotation
}
person Asif Mujteba    schedule 30.11.2012
comment
И как их лучше повернуть? - person Muhammad Jahanzaib; 30.11.2012
comment
UIImage *newImage = [[UIImage alloc] initWithCGImage: myImage.CGImage масштаб: 1,0 ориентация: UIImageOrientationRight]; как написано выше, это очень эффективный способ поворота изображений! (просто укажите, какую ориентацию вы хотите повернуть в аргументе ориентация:) - person Asif Mujteba; 30.11.2012
comment
хорошо, вращение работает нормально, но есть проблема с этим условием. если (myImage.size.width ‹ myImage.size, высота). Независимо от того, какая ориентация, поскольку я NSLog ее высоты и ширины, я получаю одинаковые значения для разных ориентаций. Как я могу это исправить? - person Muhammad Jahanzaib; 30.11.2012