c# - 上传前压缩 iPhone 图像

标签 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

最佳答案

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

关于c# - 上传前压缩 iPhone 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16639650/

上一篇:ios - 如何指定 ios 应用程序不支持 iPad 1?

下一篇:ios - 设置UILabel的frame时,是否可以在代码中将其设置到superview的垂直和水平中心?

相关文章:

c# - 确保事件永远不会有超过一个订阅者

c# - C# 中的 Java 的 search()、get() 和 size()

ios - Swift Firebase 快照到对象模型

ios - 是不是可以确定所有的Sprite Kit场景碰撞都玩完了?

iphone - 有没有办法让 MonoTouch(运行时和关联库)成为标准 iOS 项目/应用程序中的消耗和引用库?

windows-phone-7 - MvvmCross动态文本值转换

c# - 调用绑定(bind)方法时无法识别的选择器

c# - 将 WPF 窗口渲染为位图

c# - 将资源文本文件读入数组

ios - 如何在 Swift 4/Xcode 10.1 中的整个应用程序中使用自定义字体?