2012-01-30 4 views
0

내 iPhone 응용 프로그램에서 이미지의 크기 조정에 의문을 가지고 있습니다. 따라서 사용자는 갤러리에서 사진을 찍거나 하나를 선택하면이 그림이 서버로 전송됩니다.iphone 이미지 크기 조정

UIImage * small=[self imageByScalingToSize:CGSizeMake(150,150) img:image]; 

크기는 단지 예입니다 : 나는 이미 그림의 크기를 조정 this answer의 코드를 가지고있다.

나는 서버에 작은 보내 그러나 나는 고려하는 것에있다 : 나는 here을 읽고

    이미지 150 킬로바이트 작거나 같아야한다
  • 때 사용자가 아이폰은 자동으로 이미지를 (800,600) 크기로 3G를 통해 이미지를 보냅니다.

그래서 내가하고 싶은 것은 이미지를 (800,600) (이 부분은 이미 가지고있는)로 리사이즈 한 다음 150k 이상인지 확인하고 어떻게 든 축소합니다.

크기와 다른 데이터를 아는 이미지의 바이트 수를 계산하는 방법이 있습니까?
파일 크기로이 크기 축소를 어떻게 달성 할 수 있습니까?

답변

1

UIImage를 NSData로 변환하고 사용자 길이를 이미지의 바이트 크기로 변환하십시오. 사과 문서에서

:

길이 - 수신기에 포함 된 바이트 수를 돌려줍니다.

당신은 하나

NSData * UIImagePNGRepresentation (UIImage *image); 

또는

NSData * UIImageJPEGRepresentation (UIImage *image, CGFloat compressionQuality); 
+0

감사합니다. 비록 내가 올바른 압축 품질을 어떻게 찾습니까? 여러 이미지를 사용하여 패턴을 찾았지만 패턴을 찾을 수 없습니다. 하나도 있니? 뭔가 desired_img_size/current_img_size 또는 비슷한 뭔가 ??? 이미지 크기를 사용할 수 있습니까? 덕분에 – vallllll

+0

@vallllll 나는 당신이 찾고있는 것을 계산하는 정확한 방법이 있다고 생각하지 않는다, 나는 단지 임의의 값을 선택하고 그것을 사용한다. –

+0

퍽스, 당신 말이 맞아 ... 안드로이드에서 똑같은 걸 찾고 있었고 아무것도 발견되지 않았습니다 ... – vallllll

1

이 어떻게 당신에게 이미지를 업로드하여있는 UIImage을 변환 할 수 있습니다. 당신은 단지 바이트 데이터를 보내야합니다, iOS는 그것이 이미지라는 것을 모르고 크기를 조정할 수 없습니다!

NSData *imageData = UIImageJPEGRepresentation(myUIImage, compressionQuality); 

이미지를 압축하거나 크기를 조정하려면 다음과 같이하십시오. 이렇게하면 base64로 인코딩하여 서버로 보낼 수있는 NSData 객체가 생깁니다. 또한 NSData를 형성하면 이미지가 얼마나 큰지 바이트로보고 크기가 충분히 작은 지 확인할 수 있습니다.

희망이 도움이됩니다. :)