UIImage
수평 으로 뒤집는 방법 UIImageOrientationUpMirrored
, UIImage
클래스 참조 에서 열거 형 값을 찾았습니다 UIImage
. 이 속성을 사용하여 뒤집는 방법 .
답변
목표 -C
UIImage* sourceImage = [UIImage imageNamed:@"whatever.png"];
UIImage* flippedImage = [UIImage imageWithCGImage:sourceImage.CGImage
scale:sourceImage.scale
orientation:UIImageOrientationUpMirrored];
빠른
let flippedImage = myImage.withHorizontallyFlippedOrientation()
답변
이를 달성 할 수있는 매우 간단한 방법은 UIImage 대신 UIImageView를 만들고 UIImageView에서 변환을 수행하는 것입니다.
yourImageView.image =[UIImage imageNamed:@"whatever.png"];
yourImageView.transform = CGAffineTransform(scaleX: -1, y: 1); //Flipped
도움이 되었기를 바랍니다.
답변
를 사용하여 OpenGL 텍스처를 초기화하려면 종종 수직 뒤집기가 필요합니다 glTexImage2d(...)
. 위에서 제안한 트릭은 실제로 이미지 데이터를 수정하지 않으며이 경우에는 작동하지 않습니다. 다음은 https://stackoverflow.com/a/17909372에서 영감을 얻은 실제 데이터 플립을 수행하는 코드입니다.
- (UIImage *)flipImage:(UIImage *)image
{
UIGraphicsBeginImageContext(image.size);
CGContextDrawImage(UIGraphicsGetCurrentContext(),CGRectMake(0.,0., image.size.width, image.size.height),image.CGImage);
UIImage *i = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return i;
}
답변
imageFlippedForRightToLeftLayoutDirection으로 시도하고 다른 방향으로 새 UIImage를 만들었지 만 적어도 이것이 내 이미지를 뒤집는 유일한 해결책입니다.
let ciimage: CIImage = CIImage(CGImage: imagenInicial.CGImage!)
let rotada3 = ciimage.imageByApplyingTransform(CGAffineTransformMakeScale(-1, 1))
그리고 물론 finalImage = UIImage (CIImage : rotada3)
답변
이미지 방향이 정의하는대로 :
typedef NS_ENUM(NSInteger, UIImageOrientation) {
UIImageOrientationUp, // default orientation
UIImageOrientationDown, // 180 deg rotation
UIImageOrientationLeft, // 90 deg CCW
UIImageOrientationRight, // 90 deg CW
UIImageOrientationUpMirrored, // as above but image mirrored along other axis. horizontal flip
UIImageOrientationDownMirrored, // horizontal flip
UIImageOrientationLeftMirrored, // vertical flip
UIImageOrientationRightMirrored, // vertical flip
};
AVCaptureSession에서 UIImage를 처리하는 것과 같은 더 많은 상황을 위해 일부 개선했습니다.
UIImage* sourceImage = [UIImage imageNamed:@"whatever.png"];
UIImageOrientation flipingOrientation;
if(sourceImage.imageOrientation>=4){
flippedOrientation = sourceImage.imageOrientation - 4;
}else{
flippedOrientation = sourceImage.imageOrientation + 4;
}
UIImage* flippedImage = [UIImage imageWithCGImage:sourceImage.CGImage
scale: sourceImage.scale orientation: flipingOrientation];
답변
여기에 빠른 버전이 있습니다. (이 질문을 댓글에서 봤습니다)
let srcImage = UIImage(named: "imageName")
let flippedImage = UIImage(CGImage: srcImage.CGImage, scale: srcImage.scale, orientation: UIImageOrientation.UpMirrored)
답변
iOS 10 이상
[myImage imageWithHorizontallyFlippedOrientation];
스위프트 4 :
let flippedImage = myImage.withHorizontallyFlippedOrientation()