iOS 이미지를 지정된 크기로 압축

2307 단어
iOS에서 일부 이미지 표시와 처리 문제를 언급했는데 실제 계정 프로필 사진을 수정할 때 프로필 사진을 올리는 데 error = Error Domain=com이 발생했습니다.alamofire.error.serialization.response Code=-1011 “Request failed: not found (404)” UserInfo={com.alamofire.serialization.response.error.response = 문제지만 실제 프로필 이미지의 인터페이스와 파라미터는 문제없습니다. 나중에 올라온 그림이 너무 커서 NSDataBase64Encoding64CharacterLineLength 형식으로 바뀌었습니다. 생성된 문자는 78페이지의 문서로 흐르고 출력 바이트의 길이가 60~100+가 같지 않으며 서버에 제한이 있어서 너무 큰 그림을 올릴 수 없기 때문에 그림을 넣어야 합니다.줄을 지정한 크기로 압축합니다. 압축 방식은
UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality);

구체적으로 다음과 같습니다.
-(NSString *)UIImageToBase64Str:(UIImage *) image maxDataLength:(CGFloat) len
{
    CGFloat quality = 0.5;
    NSData *data = UIImageJPEGRepresentation(image, quality);
    while ((data.length/1024) > len && quality > 0.01f) {
        quality = quality - 0.05;
        data = UIImageJPEGRepresentation(image, quality);
    }
    NSString *encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return encodedImageStr;
}

0.05는 매번 재압축할 때마다 그림의 질이 감소하는 값으로 실제적으로 필요에 따라 상응하는 변경을 할 수 있다.반환된 encodedImageStr는 문자 흐름으로 서버에 직접 업로드할 수 있습니다.그림 압축 후 크기 계산:
dataLength = data.length/1024;

좋은 웹페이지 즐겨찾기