2013-05-19 13 views
0

я следующий код загрузки, который вызывается после того, как пользователи выбирает изображение из своего фотоальбома:Сжать изображение iPhone перед загрузкой

public void Picked(object sender, UIImagePickerMediaPickedEventArgs e) 
    { 
     picker.DismissViewController (false, null); 

     image.Image = e.Info [UIImagePickerController.OriginalImage] as UIImage; 

     //get a stream of the image data 
     imageData = image.Image.AsPNG().AsStream(); 
     filename = filenameBox.Text; 

     spinner.StartAnimating(); 

     Thread t = new Thread (UploadImage); 
     t.Start(); 
    } 

    public void UploadImage() 
    { 
     //upload to s3 
     Amazon.S3.AmazonS3Client s3 = new AmazonS3Client ("My access key", "my secret key"); 

     // Create a PutObject request 
     PutObjectRequest request = new PutObjectRequest { 
      BucketName = "my bucket name", 
      Key = filename 

     }; 


     //put the image data into the request 
     request.InputStream = imageData; 

     // Put image 
     PutObjectResponse response = s3.PutObject(request); 

     InvokeOnMainThread (StopSpinning); 
    } 

Все работает отлично, но iPhone камера изображение имеет большой размер и загружайте очень медленно. Я ищу способ легко сжать изображение, прежде чем загружать его в s3.

Ive прочитал другие вопросы, которые обсуждали функцию scale, выходящую в моноточе? Это трюк? Как его использовать?

Я не собираюсь обрезать изображение, просто сжимаю и уменьшаю размер. Как это можно достичь?

Ищу для monotouch примера особенно вместо objective c

+0

@ Джейсон Это 'предстоящий метод шкалы' вне? – Deekor

+0

См. Мой ответ ниже ... – Jason

ответ

2

Метод масштабирования UIImage хорошо работает, но также уменьшает размер (в пикселях) изображения. В зависимости от ваших требований он может или не подходит вам. Вместо этого вы можете поэкспериментировать с методом UIImage.AsJPEG (качество поплавка), где качество находится между 0 и 1. Это уменьшит качество изображения без изменения размера в пикселях.

+0

Это идеальное решение для моей проблемы! Спасибо! – Deekor

1

UIImage теперь поддерживает метод Scale. Это то, о чем Мигель упоминал в post you referenced.

+0

Есть ли какой-нибудь пример того, как его использовать? Что такое 'SizeF'? – Deekor

+0

РазмерF - ширина x высота Struct – Jason

Смежные вопросы