在上传之前压缩iPhone图像

时间:2013-05-19 21:29:56

标签: c# ios xamarin.ios amazon-s3 xamarin

我有以下上传代码,在用户从相册中选择图片后调用:

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

我已经阅读过其他问题,这些问题讨论了单调音中出现的scale功能?这是诀窍吗?我该如何使用它?

我不打算裁剪图像,只是压缩和缩小尺寸。如何实现这一目标?

我正在寻找一个monotouch示例,而不是objective c

2 个答案:

答案 0 :(得分:2)

UIImage的Scale方法运行良好,但它也减小了图像的大小(以像素为单位)。根据您的要求,它可能适合您,也可能不适合您。相反,您可以尝试使用方法UIImage.AsJPEG(浮点质量),其中质量介于0和1之间。这将降低图像的质量,而不会改变像素的大小。

答案 1 :(得分:1)

UIImage现在支持Scale方法。这就是Miguel在post you referenced中提到的内容。