[英]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;
}
}
您可以為此使用imagemagic。 它有自己的dll與VS一起使用。 它有一個很棒的論壇,您可以在其中找到各種示例。 我用它做了一個程序。 我花了大約半個小時(不是一個很大的應用程序,它只用於商業公司制作許多裁剪后的大小的象形圖(大約4 terrabyte的照片大聲笑))。 在這里您可以找到一些例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.