Dieser Artikel zeigt, wie sie in Visual Basic mit der Intel-JPEG-DLL Bitmaps nach JPEG Konvertiert und dabei sogar die Kompressionsrate variable einstellen können.
Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform,
sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc
zu kontaktieren.
Als erstes müssen sie die Intel-JPEG-DLL herunterladen und diese in das Verzeichnis Windows\System32\ entpacken. Anschließen müssen sie noch die DLL manuell registrieren.
Dies machen sie in dem sie unter Start->Ausführen den Befehl „regsrv32.exe %windir%\system32\ijl15.dll“ eingeben und auf OK drücken.
Nun ist die JPEG-Libary funktionsbereit.
Das Grundgerüst
' Definieren der Variablen
Dim janConvDLL as Object
Dim strFile1 as String, strFile2 as String, intQual as Integer
Dim strFehlerMsg as String
' Anlegen des Objektes
Set janConvDLL = CreateObject("janGraphics.Compendium")
' Ausgangsbild
strFile1 = "C:\bmp\Bitmap1.bmp"
' Zielbild
strFile2 = strFile1 & ".jpg"
' Qualität des Zielbildes in Prozent (%)
intQual = 70
' Konvertieren des Bildes und Abfangen der Fehlermeldungen
strFehlerMsg = janConvDLL.ConvertEx(sFile1, sFile2, 0, 0, False, intQual)
' Wenn ein Fehler Aufgetreten ist, Ausgeben
if strFehlerMsg <> "" then msgbox("Fehler! Bild " & strFile1 & _
" konnte nicht konvertiert werden.")
' Fertig
Das Konvertierte JPEG-Bild befindet sich nun ebenfalls in „C:\bmp\“ und trägt den Namen „Bitmap1.bmp.jpg“.
Alle Bitmaps eines Ordners Konvertieren
Um alle Bitmaps eines Ordners
nach JPEG zu konvertieren bedienen sie sich des "FileSystemObject" der "Microsoft-Scripting-Energy".
Ein Beispiel:
' Definieren der Variablen
Dim strOrdner as String, strFile1 as String, strFile2 as String
Dim intQual as Integer, strFehlerMsg as String
Dim strFehlerList as String
Dim objFSO as Object, objFolder as Object, objFile as Object
Dim janConvDLL as Object
' Quellordner
ordner = "C:\bmp\"
' Anlegen der Objekte
Set janConvDLL = CreateObject("janGraphics.Compendium")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(ordner)
' Qualität des Zielbildes in Prozent (%)
intQual = 70
' Prüfen ob Ordner Dateien enthällt
If not objFolder.Files.count = 0 then
' Schleife die alle Dateien des Ordners durchgeht
For Each objFile In objFolder.Files
' Ausgangsbild
strFile1 = ordner & objFile.Name
' Prüfen ob die Datei einem BitmapExtension hat
If right(objFile.name, 4) = ".bmp" then
' Liste aller Fehler ausgeben
msgbox("Bei der Konvertierung folgender Dateien sind Fehler aufgetreten:" & _
vbCrLF & strFehlerList)
end if
' Fertig
Nun werden alle Bitmaps des Ordners "C:\bmp\" mit einer Kompressionsgüte von 70% umgewandelt und nach dem Schema: >Originalname + Extension ".jpg"< gespeichert.
habe das Problem das sich die DLL unter Vista Ultimate (englisch) nicht mit regsvr32 registrieren läst.
Fehlermeldung:
The Module IJL15.DLL was loaded but the entry-point was not found.
Make shure that the "IJL15.DLL" is a valid DLL or OCX file and then try again.
Kann es sein das Vista wie bei so vielem gegen Fremd DLLs einen Schutz hat und wenn ja wie umgehe ich den.
Btw. Das DOS Fenster für regsvr32 hatte Adminrechte.
Doch macht er, weil ich das Attribut für Case Sensitiv bzw. Binary Search nicht gesetzt hab. Aber du hast recht es wäre besser aber unnötig, macht den Code nur unnötig komplizierter.
----------------------------------------------------- Tipp- und Rechtschreibfehler sind absichtlich eingebaut und
dienen der Belustigung des Lesers!
http://blog.freakfabrik.net
Praktisch! Ich störe mich nur an folgender Zeile:
[quote]If right(objFile.name, 4) = ".bmp" then[/quote]
Warum? Nun, wenn ich das ganze richtig verstanden habe, würde eine Datei "Bild.BMP" nicht konvertiert werden (Groß/Kleinschreibung der Extention).
Besser wäre:
[quote]If lcase(right(objFile.name, 4)) = ".bmp" then[/quote]