예제 #1
0
        /// <inheritdoc />
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            ImageEncoder encoder        = null;
            int          qualityPercent = (int)(100 * quality);

            switch (format)
            {
            case CompressedBitmapFormat.Jpeg:
                encoder = new JpegEncoder();
                ((JpegEncoder)encoder).Quality = qualityPercent;
                break;

            case CompressedBitmapFormat.Png:
                encoder = new PngEncoder();
                if (qualityPercent == 100)
                {
                    ((PngEncoder)encoder).Compression = PngCompression.None;
                }
                else if (qualityPercent < 10)
                {
                    ((PngEncoder)encoder).Compression = PngCompression.Level1;
                }
                else
                {
                    ((PngEncoder)encoder).Compression = (PngCompression)(qualityPercent / 10);
                }

                break;
            }

            encoder.SetResolution(new Tizen.Multimedia.Size((int)Width, (int)Height));
            return(encoder.EncodeAsync(Inner.Buffer, target));
        }