2012-01-30 58 views
0

我對我的iPhone應用程序中調整圖像大小有所懷疑。因此,用戶拍攝照片或從畫廊中選擇一張照片,然後將此照片發送到服務器。我已經有this answer的代碼來調整圖片大小:iphone image resizing

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

大小隻是一個例子。

我發送小到服務器,但我不得不東西要考慮到:

  • 的圖像必須是小於或等於150千字節,並
  • 我已閱讀here,當用戶通過3G發送圖像的iPhone自動調整圖像大小(800,600)。

所以我想要做的是調整圖像大小(800,600)(這部分我已經有),然後檢查它是否超過150k,並以某種方式減少它,如果是。

有沒有一種方法來計算圖像的字節數知道大小和其他一些數據?
我怎樣才能在文件大小的手段實現這種尺寸減少?

回答

1

將您的UIImage轉換爲NSData和user-length以獲取圖像的字節大小。

從蘋果文檔:

長度 - 返回包含在接收的字節數。

您可以使用

NSData * UIImagePNGRepresentation (UIImage *image); 

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

謝謝我有一個問題,但我如何找到正確的壓縮質量?我通過嘗試使用多個圖像尋找模式,但我無法找到模式。甚至有一個?像desired_img_size/current_img_size或類似的東西?有可能使用圖像大小?謝謝 – vallllll 2012-01-30 16:11:03

+0

@vallllll我不認爲有一個準確的方法來計算你在找什麼,我只是選擇一個任意值並使用它。 – 2012-01-30 16:14:33

+0

thks,你可能是正確的...一直在尋找同樣的東西在Android和沒有發現... – vallllll 2012-01-30 16:47:28

1

你如何上傳你的圖像轉換的UIImage。你應該只是發送字節數據,iOS不會知道它是一個圖像,並且不能調整它的大小!你有沒有看過使用像

NSData *imageData = UIImageJPEGRepresentation(myUIImage, compressionQuality); 

要壓縮您的圖像,以及調整它的大小。這將爲您提供一個NSData對象,您可以使用base64編碼並將其發送給您的服務器。同樣形成NSData,您將打包查看圖像的字節大小,並確定它是否足夠小。

希望這會有所幫助。 :)