我有以下上传代码,在用户从相册中选择图片后调用:
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
答案 0 :(得分:2)
UIImage的Scale方法运行良好,但它也减小了图像的大小(以像素为单位)。根据您的要求,它可能适合您,也可能不适合您。相反,您可以尝试使用方法UIImage.AsJPEG(浮点质量),其中质量介于0和1之间。这将降低图像的质量,而不会改变像素的大小。
答案 1 :(得分:1)
UIImage现在支持Scale方法。这就是Miguel在post you referenced中提到的内容。