Ich möchte das Bild im laufenden Betrieb in C# beschneiden.Bild beschneiden oder verkleinern mit C#
Ich habe einige Links verwiesen und implementieren wie folgt.
Referenz:
- http://www.c-sharpcorner.com/blogs/resizing-image-in-c-sharp-without-losing-quality1
- http://www.c-sharpcorner.com/blogs/resizing-image-in-c-sharp-without-losing-quality1
Aber ich bin mit dem Bild geringer Qualität zu bekommen. Ich habe gesehen, Website, die sie das Bild auf ihrem Server hochladen und verkleinern die Website ohne Qualitätsverlust
Wie haben sie gemacht? Warum können wir nicht in C# tun?
CODE
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;
}
}
Ich hatte dieses Problem in der Vergangenheit und löste es, aber ich kann mich nicht erinnern, wie ATM und ich bei der Arbeit sind. Ich möchte irgendwie sagen, dass du es in JPEG umwandeln kannst, es verkleinern und dann zurück zur Bitmap, weil ich denke, dass die Skalierung der Bitmap nicht so gut ist ... Ich bin mir nicht sicher, ob ich es auch gemacht habe, aber es fühlt sich an wie etwas Ich tat. Es ist Jahre her ... Ich werde mich darum kümmern, wenn Sie das nicht testen und sehen, das hilft. –
Mögliches Duplikat von [Größe eines Bild C# ändern] (http://stackoverflow.com/questions/1922040/resize-an-image-c-sharp) – Nino
Zuschneiden sollte Qualität nicht verlieren. Wenn Sie es verkleinern, werden Sie immer Informationen verlieren. Stellen Sie sicher, dass die Einstellung __same dpi__ für beide Bilder gilt. - Siehe [hier für ein ähnliches Problem] (http://stackoverflow.com/questions/26612057/where-does-this-quality-loss-on-images-come-from/26614735?s=6|0.0626#26614735) . Beachten Sie den zweiten Teil! - Auch [siehe hier über Ihr Pixelformat] (http://stackoverflow.com/questions/34590509/pixelformat-format32bppargb-vs-pixelformat-format64bppargb) – TaW