IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Visual Basic - Bitmaps in JPEG umwandeln



Bitmaps in JPEG umwandeln

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.


Autor: Peter Becker (Floyd)
Datum: 23-02-2004, 14:39:27
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 14721x
Rating: 9 (1x bewertet)

Hinweis:

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.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Vorbereitung

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

' Zielbild
strFile2 = ordner & objFile.Name & ".jpg"

' Konvertieren des Bildes und Abfangen der Fehlermeldungen
strFehlerMsg = janConvDLL.ConvertEx(sFile1, sFile2, 0, 0, False, intQual)
end if

' Prüfen ob Fehler aufgetreten
If strFehlerMsg <> "" then

' Fehler speichern in strFehlerList
strFehlerList = strFehlerList & strFehler & vbCrLf

' Temporärer Fehlerspeicher löschen
strFehlerMsg=""
end if
Next

' 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.


Pluto_XXX
Rookie
Beitrag vom:
10-10-2007, 22:42:14

Probleme beim registrieren der DLL unter Vista

Hallo,

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.

Gruß Stefan

-----------------------------------------------------


Floyd
Senior Member
Beitrag vom:
29-02-2004, 09:04:02

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


Rolfhub
Senior Member
Beitrag vom:
29-02-2004, 02:03:36

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]


-----------------------------------------------------


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0