C#C
C#4y ago
Tiger

Recursively compressing image as webp

                long len = image.Length;
                using var readStream = image.OpenReadStream();
                MemoryStream tmpImageStream = null;
                        bool firstRun = true;
                        while (len > maxLen)
                        {
                            // !!!! ERROR IS HERE !!!! 
                            using var tmpISImage = SixLabors.ImageSharp.Image.Load(firstRun ? readStream : tmpImageStream, firstRun ? new JpegDecoder() : new WebpDecoder());              
                            var newWidth = (int)Math.Round(tmpISImage.Width / 1.35, 0, MidpointRounding.ToNegativeInfinity);
                            var newHeight = (int)Math.Round(tmpISImage.Height / 1.35, 0, MidpointRounding.ToNegativeInfinity);
                            tmpISImage.Mutate(x => x.Resize(newWidth, newHeight));

                            if (tmpImageStream is null)
                            {
                                tmpImageStream = new();
                            }
                            else
                            {
                                tmpImageStream.Dispose();
                                tmpImageStream = new();
                            }

                            tmpISImage.SaveAsWebp(tmpImageStream);

                            len = tmpImageStream.Length;

                            if (firstRun) firstRun = false;
                        }
                    }
                
Was this page helpful?