Ich hoffe, jemand kann mir helfen, mehrere große Bilder (PNG) in eins zu verschmelzen. Ich habe bis zu 30 Bilder, die 20000x2000 sind und möchte sie zusammenführen. Die Ausgabe ist ein Bild, das in die GIS-Software geladen werden kann.Merge große Bilder mit VB.Net
Das Problem, das ich habe, ist ich bin nach dem 4. Bild aus dem Speicher.
Der Code, den ich unten habe, hält im Wesentlichen das gesamte Bild im Speicher, wie es das Nähen tut. Gibt es eine Möglichkeit, die Bilder effektiv zu steppen, ohne alles in den Speicher zu laden, oder die Speicherkapazität zu erhöhen und all meinen RAM und/oder virtuellen Speicher zu nutzen?
Public Function stitchAllImagesOnXAxis(imageDirectoryPath As String, outputImagePath As String) As Boolean
Try
Dim evolvingImage As Bitmap
Dim filenames() As String = IO.Directory.GetFiles(imageDirectoryPath)
For i As Integer = 0 To filenames.Count - 1
If Not filenames(i).EndsWith(".png") Then filenames = filenames.RemoveAt(i)
Next i
If filenames.Count = 0 Then Return False
Dim FS As New IO.FileStream(filenames(0), IO.FileMode.Open)
evolvingImage = Bitmap.FromStream(FS)
FS.Close()
For i As Integer = 1 To filenames.Count - 1
FS = New IO.FileStream(filenames(i), IO.FileMode.Open)
evolvingImage = stitchImagesOnXAxis(evolvingImage, Bitmap.FromStream(FS), 5)
FS.Close()
Next
evolvingImage.Save(outputImagePath, Imaging.ImageFormat.Png)
evolvingImage.Dispose()
Return True
Catch ex As Exception
Debug.WriteLine(ex.Message)
Return False
End Try
Meine Idee, IDAT Chunks aus den verschiedenen Dateien zu verketten, scheint ungültig zu sein, da, soweit ich jetzt verstehe, separate IDAT Chunks einfach Teile eines komprimierten Blocks sind, nicht getrennt komprimierte Blöcke. –
Ja, ich habe es versucht, aber es hat die Software nur als fehlerhaft oder ungültig bezeichnet. – Ando
1) Ich kann PNGs mit den IDAT-Chunks (oder den Daten darin) erstellen, die nach [pngcheck] (http://www.libpng.org/pub/png/apps/pngcheck.html) ohne Fehler verkettet sind, aber das tun sie Öffnen Sie die CRC für die IHDR nach der Aktualisierung der Bildhöhe 2) Sie haben möglicherweise eine größere Chance auf Erfolg, wenn Sie etwas anderes als GDI + verwenden. –