Ich versuche ein skaliertes Bild aus einer Bitmap zu erstellen, setze eine neue Höhe / Breite und eine neue Auflösung und speichere es in PNG. Ich kann dies entweder direkt von A) Image.FromFile(filename)
oder B) New Bitmap(imageSource)
tun, um die A Bitmap zu erstellen, die an B <übergeben wird / em> . Beide funktionieren okay schmokay, aber A erlaubt mir nicht, eine neue Breite / Höhe bei der Erstellung festzulegen (aber ich kann Werte mit useIcm=True
beibehalten) und < strong> B erlaubt mir nicht, Werte zu speichern.
Okay, jetzt zu etwas Code und Beispielen:
Dim sourceBitmap As New
Bitmap(imagePath & myImage1Name)
& lt; -nicht gut (# 1 Überlastung). Konserviert nicht
Dinge wie HorizontalResolution
oder PixelFormat
auf .Save
Dim sourceBitmap2 As Bitmap = Image.FromFile(imagePath & myImage1Name,
True)
& lt; -nicht gut (# 5 Überladung). es tut
Dinge bewahren wie
HorizontalResolution
oder
PixelFormat
auf .Save
, aber es
Mit nicht kann ich das Bild in einer neuen Größe initialisieren.
Dim targetBitmap As New
Bitmap(sourceBitmap2, newWidth,
newHeight)
& lt; -nicht gut. Obwohl
sourceBitmap2
(siehe # 2 oben) war
initialisiert mit useIcm=True
, it
Es spielt keine Rolle, wenn ich es einmal passiert habe
als Quelle in targetBitmap
. Im Grunde suche ich nach einer Möglichkeit, eine neue Bitmap zu konstruieren, wobei sowohl useIcm=True
als auch die Breite / Höhe gleichzeitig festlegen ( Width
/ Height
sind) schreibgeschützte Eigenschaften, sobald sie erstellt wurden.
Ich habe auch die Graphics.DrawImage
Route heruntergefahren und es ist dasselbe - Graphics.FromImage(sourceBitmap)
behält keine Werte.
Warum müssen diese Werte beibehalten werden? Weil ich diese Bilder in PNG (für die Dateigröße) mit einer neuen Auflösung konvertieren muss und die gleichen physischen Abmessungen (w / h in Zoll) für den Druck behalten soll. Ich kenne die neue Pixelbreite / -höhe, die benötigt wird, basierend auf den Auflösungswerten, die ich mit .SetResolution(xDpi,yDpi)
übergebe, um die physischen Abmessungen zu erhalten, also ist das nicht das Problem. Das Problem ist, dass die PixelFormatSize
unverändert bleiben müssen (ja, ich habe EncoderParameters
ausprobiert - sie funktionieren nicht. Ich kann dir die blutigen Details geben, wenn du magst, aber es genügt, sie vorerst zu sagen, sie einfach nicht funktionieren).
Puh, hat das von meiner Brust genommen! Okay, jeder, der wirklich weiß, wie das alles funktioniert, kann helfen?
BEARBEITEN : Dateitypen, die zum Konvertieren in PNG benötigt werden: BMP, TIF, GIF, WMF, EMF.