Пример #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));
        }
Пример #2
0
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            return(Task.Run(() => {
#if UIKIT
                var data = format == CompressedBitmapFormat.Jpeg ? inner.AsJPEG((float)quality) : inner.AsPNG();
                data.AsStream().CopyTo(target);
#else
#if UNIFIED
                var rect = new CoreGraphics.CGRect();
#else
                var rect = new RectangleF();
#endif

                var cgImage = inner.AsCGImage(ref rect, null, null);
                var imageRep = new NSBitmapImageRep(cgImage);

                var props = format == CompressedBitmapFormat.Png ?
                            new NSDictionary() :
                            new NSDictionary(new NSNumber(quality), new NSString("NSImageCompressionFactor"));

                var type = format == CompressedBitmapFormat.Png ? NSBitmapImageFileType.Png : NSBitmapImageFileType.Jpeg;

                var outData = imageRep.RepresentationUsingTypeProperties(type, props);
                outData.AsStream().CopyTo(target);
                #endif
            }));
        }
Пример #3
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     return Task.Run(() => {
         var data = format == CompressedBitmapFormat.Jpeg ? inner.AsJPEG((float)quality) : inner.AsPNG();
         data.AsStream().CopyTo(target);
     });
 }
Пример #4
0
        public async Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            string installedFolderImageSourceUri = _inner.UriSource.OriginalString.Replace("ms-appx:/", string.Empty);
            var    wb   = new WriteableBitmap(_inner.PixelWidth, _inner.PixelHeight);
            var    file = await StorageFile.GetFileFromPathAsync(_inner.UriSource.OriginalString);

            await wb.SetSourceAsync(await file.OpenReadAsync());

            await new WriteableBitmapImageBitmap(wb).Save(format, quality, target).ConfigureAwait(false);
        }
Пример #5
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     return(Task.Run(() => {
         var formatName = format == CompressedBitmapFormat.Jpeg ? "jpeg" : "png";
         var param = format == CompressedBitmapFormat.Jpeg ? "quality" : "compression";
         byte[] buffer = inner.SaveToBuffer(formatName, new [] { param }, new [] { quality.ToString() });
         using (var ms = new MemoryStream(buffer)) {
             ms.CopyTo(target);
         }
     }));
 }
Пример #6
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     return Task.Run(() => {
         var formatName = format == CompressedBitmapFormat.Jpeg ? "jpeg" : "png";
         var param = format == CompressedBitmapFormat.Jpeg ? "quality" : "compression";
         byte[] buffer = inner.SaveToBuffer(formatName, new [] { param }, new [] { quality.ToString() });
         using (var ms = new MemoryStream(buffer)) {
             ms.CopyTo(target);
         }
     });
 }
Пример #7
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     return Task.Run(() => {
         if (format == CompressedBitmapFormat.Jpeg) {
             var jpgEncoder = GetEncoder(ImageFormat.Jpeg);
             var encoderParams = new EncoderParameters(1);
             var encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (int)(quality * 100.0f));
             encoderParams.Param[0] = encoderParam;
             inner.Save(target, jpgEncoder, encoderParams);
         } else {
             inner.Save(target, ImageFormat.Png);
         }
     });
 }
Пример #8
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target) =>
 Task.Run(delegate {
     if (format != CompressedBitmapFormat.Jpeg)
     {
         this.inner.Save(target, ImageFormat.Png);
     }
     else
     {
         ImageCodecInfo encoder          = this.GetEncoder(ImageFormat.Jpeg);
         EncoderParameters encoderParams = new EncoderParameters(1);
         EncoderParameter parameter      = new EncoderParameter(Encoder.Quality, (long)((int)(quality * 100f)));
         encoderParams.Param[0]          = parameter;
         this.inner.Save(target, encoder, encoderParams);
     }
 });
Пример #9
0
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            return(Task.Run(() =>
            {
                var encoder = format == CompressedBitmapFormat.Jpeg ?
                              (BitmapEncoder) new JpegBitmapEncoder()
                {
                    QualityLevel = (int)(quality * 100.0f)
                } :
                (BitmapEncoder) new PngBitmapEncoder();

                encoder.Frames.Add(BitmapFrame.Create(inner));
                encoder.Save(target);
            }));
        }
Пример #10
0
        public async Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            // NB: Due to WinRT's brain-dead design, we're copying this image 
            // like three times. Let Dreams Soar.
            var rwTarget = new InMemoryRandomAccessStream();
            var fmt = format == CompressedBitmapFormat.Jpeg ? BitmapEncoder.PngEncoderId : BitmapEncoder.JpegEncoderId;
            var encoder = await BitmapEncoder.CreateAsync(fmt, rwTarget, new[] { new KeyValuePair<string, BitmapTypedValue>("ImageQuality", new BitmapTypedValue(quality, PropertyType.Single)) });

            var pixels = new byte[inner.PixelBuffer.Length];
            await inner.PixelBuffer.AsStream().ReadAsync(pixels, 0, (int)inner.PixelBuffer.Length);

            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)inner.PixelWidth, (uint)inner.PixelHeight, 96, 96, pixels);
            await encoder.FlushAsync();
            await rwTarget.AsStream().CopyToAsync(target);
        }
Пример #11
0
        public async Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            // NB: Due to WinRT's brain-dead design, we're copying this image
            // like three times. Let Dreams Soar.
            var rwTarget = new InMemoryRandomAccessStream();
            var fmt      = format == CompressedBitmapFormat.Jpeg ? BitmapEncoder.JpegEncoderId : BitmapEncoder.PngEncoderId;
            var encoder  = await BitmapEncoder.CreateAsync(fmt, rwTarget, new[] { new KeyValuePair <string, BitmapTypedValue>("ImageQuality", new BitmapTypedValue(quality, PropertyType.Single)) });

            var pixels = new byte[inner.PixelBuffer.Length];
            await inner.PixelBuffer.AsStream().ReadAsync(pixels, 0, (int)inner.PixelBuffer.Length);

            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)inner.PixelWidth, (uint)inner.PixelHeight, 96, 96, pixels);
            await encoder.FlushAsync();

            await rwTarget.AsStream().CopyToAsync(target);
        }
Пример #12
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     return(Task.Run(() => {
         if (format == CompressedBitmapFormat.Jpeg)
         {
             var jpgEncoder = GetEncoder(ImageFormat.Jpeg);
             var encoderParams = new EncoderParameters(1);
             var encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (int)(quality * 100.0f));
             encoderParams.Param[0] = encoderParam;
             inner.Save(target, jpgEncoder, encoderParams);
         }
         else
         {
             inner.Save(target, ImageFormat.Png);
         }
     }));
 }
Пример #13
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target) =>
 Task.Run(delegate {
     JpegBitmapEncoder encoder3;
     if (format != CompressedBitmapFormat.Jpeg)
     {
         encoder3 = (JpegBitmapEncoder) new PngBitmapEncoder();
     }
     else
     {
         encoder3 = new JpegBitmapEncoder {
             QualityLevel = (int)(quality * 100f)
         };
     }
     BitmapEncoder encoder = encoder3;
     encoder.Frames.Add(BitmapFrame.Create(this.inner));
     encoder.Save(target);
 });
Пример #14
0
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            return(Task.Run(() => {
#if SILVERLIGHT
                if (format == CompressedBitmapFormat.Png)
                {
                    throw new PlatformNotSupportedException("WP8 can't save PNGs.");
                }

                var wb = new WriteableBitmap(inner);
                wb.SaveJpeg(target, wb.PixelWidth, wb.PixelHeight, 0, (int)(quality * 100.0f));
#else
                var encoder = format == CompressedBitmapFormat.Jpeg ?
                              (BitmapEncoder) new JpegBitmapEncoder()
                {
                    QualityLevel = (int)(quality * 100.0f)
                } :
                (BitmapEncoder) new PngBitmapEncoder();

                encoder.Frames.Add(BitmapFrame.Create(inner));
                encoder.Save(target);
#endif
            }));
        }
Пример #15
0
        public async Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            string installedFolderImageSourceUri = inner.UriSource.OriginalString.Replace("ms-appx:/", "");
            var wb = new WriteableBitmap(inner.PixelWidth, inner.PixelHeight);
            var file = await StorageFile.GetFileFromPathAsync(inner.UriSource.OriginalString);
            await wb.SetSourceAsync(await file.OpenReadAsync());

            await (new WriteableBitmapImageBitmap(wb).Save(format, quality, target));
        }
Пример #16
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     throw new NotSupportedException("You can't save resources");
 }
Пример #17
0
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            var fmt = format == CompressedBitmapFormat.Jpeg ? Bitmap.CompressFormat.Jpeg : Bitmap.CompressFormat.Png;

            return(Task.Run(() => { inner.Compress(fmt, (int)quality * 100, target); }));
        }
Пример #18
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target) =>
 this.Apply(x => x.Save(format, quality, target));
Пример #19
0
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            return Task.Run(() => {
#if UIKIT
                var data = format == CompressedBitmapFormat.Jpeg ? inner.AsJPEG((float)quality) : inner.AsPNG();
                data.AsStream().CopyTo(target);

#else

#if UNIFIED
                var rect = new CoreGraphics.CGRect();
#else
                var rect = new RectangleF();
#endif

                var cgImage = inner.AsCGImage(ref rect, null, null);
                var imageRep = new NSBitmapImageRep(cgImage);

                var props = format == CompressedBitmapFormat.Png ? 
                    new NSDictionary() : 
                    new NSDictionary(new NSNumber(quality), new NSString("NSImageCompressionFactor"));

                var type = format == CompressedBitmapFormat.Png ? NSBitmapImageFileType.Png : NSBitmapImageFileType.Jpeg;

                var outData = imageRep.RepresentationUsingTypeProperties(type, props);
                outData.AsStream().CopyTo(target);
                #endif
            });
        }
Пример #20
0
        public Task Save(CompressedBitmapFormat format, float quality, Stream target)
        {
            return Task.Run(() => {
            #if SILVERLIGHT
                if (format == CompressedBitmapFormat.Png) {
                    throw new PlatformNotSupportedException("WP8 can't save PNGs.");
                }

                var wb = new WriteableBitmap(inner);
                wb.SaveJpeg(target, wb.PixelWidth, wb.PixelHeight, 0, (int)(quality * 100.0f));
            #else
                var encoder = format == CompressedBitmapFormat.Jpeg ?
                    (BitmapEncoder)new JpegBitmapEncoder() { QualityLevel = (int)(quality * 100.0f) } :
                    (BitmapEncoder)new PngBitmapEncoder();

                encoder.Frames.Add(BitmapFrame.Create(inner));
                encoder.Save(target);
            #endif
            });
        }
Пример #21
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     throw new NotSupportedException("You can't save resources");
 }
Пример #22
0
 public Task Save(CompressedBitmapFormat format, float quality, Stream target)
 {
     var fmt = format == CompressedBitmapFormat.Jpeg ? Bitmap.CompressFormat.Jpeg : Bitmap.CompressFormat.Png;
     return Task.Run(() => { inner.Compress(fmt, (int)quality * 100, target); });
 }