앨범과 사진 찍는 UIImage 90도 회전 문제 해결
장면
1. ,UIImagePickerController allowsEditing YES. UIImagePickerControllerOriginalImage 。
2. UIImagePickerController allowsEditing YES, UIImagePickerControllerEditedImage,
아래 그림과 같이 사용한 그림입니다.바로jpeg
질문 그림:
회전jpeg
시작 코드
# pragma mark ------ ----
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion:^{
}];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
self.imageview.image = image;
self.isSelectPhoto=YES;
self.updateImage.hidden = NO;
[self updateCreateBtnStatus];
}
문제 해결
선택한 이미지는 UIImageView에 직접 표시됩니다. 방향은 문제없습니다. 앨범에도 문제가 없습니다.그러나 이미지를 샌드박스 디렉터리에 쓰면 위의 그림이 회전하는 문제가 발생하는데 이 그림을 서버에 올리면 백그라운드에서 보이는 그림도 문제가 있다.다음에 서버에서 가져올 때 보여주면 문제가 있습니다.우선, 이미지를 샌드박스 디렉터리에 쓸 때, 이미지에 대해 아무런 수정도 하지 않았으니, 이 단계는 틀림없이 문제없을 것이다.바로 이미지 자체의 문제입니다. 이미지에 이미지Orientation의 읽기 전용 속성이 있음을 발견했습니다. 대응하는 UIImageOrientation은 매거 유형입니다. 다음과 같습니다.
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
};
NSLog(@"%ld",(long)image.imageOrientation);
출력을 인쇄합니다
image.imageOrientation
.발견1.
사진을 찍어 얻은 것이다imageOrientation
출력은 0이고 대응하는 매거는UIImageOrientationUp
.
사진을 찍어 얻은 것이다imageOrientation
출력은 3, 대응하는 매거는UIImageOrientationRight
. 2. 만약에
imagePickerController.allowsEditing = YES; UIImagePickerControllerEditedImage,
결과가 인쇄된 것은
사진을 찍어 얻은 것이다imageOrientation
출력은 3, 대응하는 매거는UIImageOrientationRight
.
사진을 찍어 얻은 것이다imageOrientation
출력은 0이고 대응하는 매거는UIImageOrientationtUP
. 3. 만약에
imagePickerController.allowsEditing = YES; UIImagePickerControllerOriginalImage,
결과가 인쇄된 것은
사진을 찍어 얻은 것이다imageOrientation
출력은 0이고 대응하는 매거는UIImageOrientationUP
.
사진을 찍어 얻은 것이다imageOrientation
출력은 3, 대응하는 매거는UIImageOrientationRight
. 우리 뜻대로 정상이야
사진을 찍어 얻은 것이다imageOrientation
출력은 0이고 대응하는 매거는UIImageOrientationUP
.
사진을 찍어 얻은 것이다imageOrientation
출력은 3, 대응하는 매거는UIImageOrientationRight
.종합하면 그게 문제겠지.세로로 사진을 찍어서 되돌아오는 이미지의 방향은 기본적으로 시계 반대 방향으로 90도 회전합니다. 샌드박스에 쓰기 전에 이미지를 조정해야 합니다.해결 코드
# pragma mark ------ ----
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion:^{
}];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// 90
if(image.imageOrientation!=UIImageOrientationUp){
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
self.imageview.image = image;
self.isSelectPhoto=YES;
self.updateImage.hidden = NO;
[self updateCreateBtnStatus];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.