Mensen,
om de informatie van Kabels en Leidingen welke wij als PNG bestand binnen krijgen in AutoCAD te kunnen inladen heb ik een plugin gemaakt welke de PNG bestanden omzet naar DXF.
Deze plugin werkt uitstekend zolang de kleur van de lijnen in de afbeelding niet Oker of Paars zijn.
De output is dan namelijk een geheel witte BMP terwijl in alle overige gevallen de lijnen in het zwart worden weergegeven.
Via onderstaande functie zet ik de PNG om naar een 1bpp BMP. Deze BMP wordt vervolgens gevectoriseerd tot een DXF. Het programma dat het vectoriseren voor zijn rekening neemt accepteerd enkel een 1bpp BMP!
Als alternatief op bovenstaande functie heb ik een functie gemaakt welke de afbeelding pixel voor pixel doorloopt en zo alle pixels welke een andere kleur dan wit hebben op zwart zet.
Dit werkt prima, maar is alleen erg traag.
Is er iemand wie mij kan vertellen waarom het bij 2 specifieke kleuren misgaat of een mogelijk alternatief weet om de afbeeldingen om te zetten naar zwart-wit?
om de informatie van Kabels en Leidingen welke wij als PNG bestand binnen krijgen in AutoCAD te kunnen inladen heb ik een plugin gemaakt welke de PNG bestanden omzet naar DXF.
Deze plugin werkt uitstekend zolang de kleur van de lijnen in de afbeelding niet Oker of Paars zijn.
De output is dan namelijk een geheel witte BMP terwijl in alle overige gevallen de lijnen in het zwart worden weergegeven.
Via onderstaande functie zet ik de PNG om naar een 1bpp BMP. Deze BMP wordt vervolgens gevectoriseerd tot een DXF. Het programma dat het vectoriseren voor zijn rekening neemt accepteerd enkel een 1bpp BMP!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| Function ConvertPNG(strFile As String)
Dim strFileOut As String = "C:\TEMP\" & Path.GetFileName(strFile) & ".bmp"
Dim bmpTemp As Bitmap = System.Drawing.Image.FromFile(strFile)
Dim bmp As Bitmap = bmpTemp.Clone(New Rectangle(0, 0, bmpTemp.Width, bmpTemp.Height), PixelFormat.Format32bppRgb)
Dim bmpNew As Bitmap = bmp.Clone(New Rectangle(0, 0, bmpTemp.Width, bmpTemp.Height), PixelFormat.Format1bppIndexed)
bmp = Nothing
bmpNew.Save(strFileOut, ImageFormat.Bmp)
bmpNew = Nothing
'start conversie naar DXF
If generateDXF(strPathInput, "C:\TEMP\", strFileOut) = True Then
'OK
convSuccess = "C:\TEMP\" & Path.GetFileNameWithoutExtension(strFileOut) & ".dxf"
modFunctions.writeLOGtxt("DXF voor " & strFile & " succesvol")
Else
MsgBox("Fout bij het vectoriseren van " & strFileOut)
convSuccess = "fout"
End If
'geconverteerd bestand verwijderen
If File.Exists(strFileOut) Then
File.Delete(strFileOut)
End If
Return convSuccess
End Function |
Als alternatief op bovenstaande functie heb ik een functie gemaakt welke de afbeelding pixel voor pixel doorloopt en zo alle pixels welke een andere kleur dan wit hebben op zwart zet.
Dit werkt prima, maar is alleen erg traag.
Is er iemand wie mij kan vertellen waarom het bij 2 specifieke kleuren misgaat of een mogelijk alternatief weet om de afbeeldingen om te zetten naar zwart-wit?