Moin, ich bin’s mal wieder. Ich hab jetzt fast den ganzen Tag gesucht und finde keine Lösung.
Wie kann man die Bildgröße einer bestehenden png oder bmp Datei ändern?
Das Bild wird vorher aus einem Pannel in eine png Datei gespeichert und die wird später in eine pdf Datei eingebaut. Dazu muss ich vorher aber die Größe ändern. ABER WIE?
Viele Grüße bax
Hallo!
Ganz einfach: Bild (alt) einlesen, neues Bitmap in der gewünschten neuen Auflösung erzeugen, altes Bild flächendeckend auf das neue Bitmap malen, neues Bitmap speichern.
Gruß,
Martin
…altes Bild flächendeckend auf das neue Bitmap malen…
Aber wie?
Ich bin einfach zu blöde! Ich hab jetzt unter anderem folgenden versucht:
Private Sub ButtonRun\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonRun.Click
If File.Exists("C:\TestBild.png") = True Then
Dim oldBitmap As New Bitmap("C:\TestBild.png")
Dim newBitmap As New Bitmap(100, 100)
newBitmap = oldBitmap
newBitmap.Save("C:\TestBild\_neu.png")
End If
End Sub
Dann kopiert er aber das Bild und verwirft die ursprünglich angegebene Größe. Was muss ich ändern?
Gruß bax
…altes Bild flächendeckend auf das neue Bitmap malen…
Aber wie?
Ich bin einfach zu blöde! Ich hab jetzt unter anderem
folgenden versucht:Private Sub ButtonRun_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ButtonRun.Click
If File.Exists(„C:\TestBild.png“) = True Then
Dim oldBitmap As New Bitmap(„C:\TestBild.png“)
Dim newBitmap As New Bitmap(100, 100)
newBitmap = oldBitmap
Da kommt der Murks rein. Du weist der Objektreferenz „newBitmap“ einfach die Objektreferenz „oldBitmap“ zu, d.h. danach verweisen beide Variablen auf das selbe Objekt (das alte Bild).
Füg’ mal hier folgendes ein:
Dim g as Graphics
g = Graphics.FromImage(newBitmap)
g.DrawImage(oldBitmap, New Rectangle(0,0,newBitmap.Width,newBitmap.Height))
g.Dispose()
(Aus dem Kopf und nicht ausprobiert)
newBitmap.Save(„C:\TestBild_neu.png“)
End If
End SubDann kopiert er aber das Bild und verwirft die ursprünglich
angegebene Größe. Was muss ich ändern?
Gruß bax
Gruß,
Martin
Na endlich. Vielen Dank!
Hier meine fertige Funktion.
Private Sub ButtonRun\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonRun.Click
'Ruft die Funktion auf: ResizePicture(Dateiname, Skalierungs-/Zoomfaktor)
ResizePicture("C:\TestBild.png", 2)
End Sub
Private Sub ResizePicture(ByVal strFileName As String, ByVal dZoomfaktor As Double)
Try
If File.Exists(strFileName) = True Then
Dim oldBitmap As Image = Image.FromFile(strFileName)
Dim newBitmap As New Bitmap(CInt(oldBitmap.Width \* dZoomfaktor), CInt(oldBitmap.Height \* dZoomfaktor))
Dim g As Graphics
g = Graphics.FromImage(newBitmap)
g.DrawImage(oldBitmap, New Rectangle(0, 0, newBitmap.Width, newBitmap.Height))
g.Dispose()
newBitmap.Save(strFileName.Insert(strFileName.LastIndexOf(CType(".", Char)), "\_resized"))
oldBitmap.Dispose()
newBitmap.Dispose()
g.Dispose()
Else
MsgBox("File """ & strFileName & """ not found!", MsgBoxStyle.Information)
End If
Catch ex As Exception
MsgBox("Error" & Chr(13) & ex.Message)
End Try
End Sub