Ich habe eine ASP.NET MVC 2 App, die auf .NET 4 abzielt und in der Lage sein muss, die Größe von Bildern im laufenden Betrieb zu ändern und sie in die Antwort zu schreiben.Ist es in Ordnung, WPF-Assemblys in einer Webanwendung zu verwenden?
Ich habe Code, der das tut und es funktioniert. Ich benutze System.Drawing.dll.
Allerdings möchte ich meinen Code verbessern, so dass ich nicht nur die Größe des Bildes skaliere, sondern es von 24bpp auf 4bit Graustufen heruntersetze. Ich konnte für mein Leben Code nicht finden, wie man das mit System.Drawing.dll macht.
Aber ich habe eine Menge WPF-Zeug gefunden. Dies ist mein Arbeits-/Beispielcode (wird in LinqPad ausgeführt).
// Load the original 24 bit image
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.UriSource = new Uri(@"C:\Temp\Resized\18_appa2_015.png", UriKind.Absolute);
//bitmapImage.DecodePixelWidth = 600;
bitmapImage.EndInit();
// Create the destination image
var formatConvertedBitmap = new FormatConvertedBitmap();
formatConvertedBitmap.BeginInit();
formatConvertedBitmap.Source = bitmapImage;
formatConvertedBitmap.DestinationFormat = PixelFormats.Gray4;
formatConvertedBitmap.EndInit();
// Encode and dump the image to disk
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(formatConvertedBitmap));
using (var fileStream = File.Create(@"C:\Temp\Resized\18_appa2_015_s2.png"))
{
encoder.Save(fileStream);
}
Es verwendet System.Xaml.dll, WindowsBase.dll, PresentationCore.dll und PresentationFramework.dll. Die verwendeten Namespaces sind: System.Windows.Controls, System.Windows.Media und System.Windows.Media.Imaging.
Gibt es ein Problem bei der Verwendung dieser Namespaces in meiner Webanwendung? Es scheint nicht richtig zu sein.
Wenn jemand weiß, wie man die Bittiefe ohne all diese WPF-Zeug (die ich kaum verstehe, BTW) würde ich mich freuen, das auch zu sehen.
Ich werde es jetzt versuchen und sehen, wie es geht. – Chris
Es hat funktioniert. Es hat sich nicht über Fäden oder irgendetwas beschwert. Ich werde Ihre Antwort als Antwort markieren, da Sie diese zusätzlichen Informationen zur Verfügung gestellt haben. – Chris