簡體   English   中英

使用C#裁剪圖像或按比例縮小

[英]Cropping image or scale down using c#

我想在C#中即時裁剪圖像。

我已經引用了一些鏈接並實現如下。

參考:

但是我得到的圖像質量很低。 我看過網站,他們在服務器中上傳圖像並縮小網站規模,而不會降低質量

他們做得如何? 為什么我們不能用C#做?

 public static Image ScaleImage(Image image, int width, int height)
        {
            if (image.Height < height && image.Width < width) return image;
            using (image)
            {
                double xRatio = (double)image.Width / width;
                double yRatio = (double)image.Height / height;
                double ratio = Math.Max(xRatio, yRatio);
                int nnx = (int)Math.Floor(image.Width / xRatio);
                int nny = (int)Math.Floor(image.Height / yRatio);
                Bitmap resizedImage = new Bitmap(nnx, nny, PixelFormat.Format64bppArgb);
                using (Graphics graphics = Graphics.FromImage(resizedImage))
                {
                    graphics.Clear(Color.Transparent);

                    // This is said to give best quality when resizing images
                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    graphics.SmoothingMode = SmoothingMode.HighQuality;
                    graphics.CompositingQuality = CompositingQuality.HighQuality;
                    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

                    graphics.DrawImage(image,
                       new Rectangle(0, 0, nnx, nny),
                       new Rectangle(0, 0, image.Width, image.Height),
                       GraphicsUnit.Pixel);
                }
                return resizedImage;
            }
        }

你可以試試凈貴賓 ,在C#綁定libvips 這是一個惰性的,流式,按需驅動的圖像處理庫,因此它可以執行此類操作,而無需加載整個圖像。

例如,它帶有一個方便的圖像縮略圖:

Image image = Image.Thumbnail("image.jpg", 300, 300);
image.WriteToFile("my-thumbnail.jpg");

您可以為此使用imagemagic。 它有自己的dll與VS一起使用。 它有一個很棒的論壇,您可以在其中找到各種示例。 我用它做了一個程序。 我花了大約半個小時(不是一個很大的應用程序,它只用於商業公司制作許多裁剪后的大小的象形圖(大約4 terrabyte的照片大聲笑))。 在這里您可以找到一些例子。

https://www.imagemagick.org/script/index.php

ImageMagick絕對是一個可行的解決方案,GraphicsMagick或libvips也是可行的(盡管我不確定libvips是否具有C#特定的綁定,但是它比IM或GM快得多 )。

您可能還想嘗試使用ImageKit或其他類似的功能齊全的第三方圖像優化和交付解決方案來為您完成所有這些調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM