PDA

Vollständige Version anzeigen : BMP in JPG konvertieren


Wasi
26.03.2006, 21:54
Hallo zusammen,

Ich möchte aus meiner DB gescannte (etztwain) Bitmaps in JPG konvertieren. Dazu habe ich von http://www.vbarchiv.net/archiv/tipp_425.html

die janGrahics.dll heruntergeladen und mittels

REGSVR32.EXE janGrahics.dll

registriert. In Access habe ich dann unter Verweise den Eintrag "janGraphics Library" aktiviert.

Allerdings funktioniert die Konvertierung nicht. Habe es mit folgenden Code versucht (wie in vb@rchiv beschrieben):

Set janConvDLL = CreateObject("janGraphics.Compendium")
sMsg = janConvDLL.Conv(sFile1, sFile2)

Fehlermeldung: Objekt unterstützt Methode nicht

mit
Set janConvDLL = CreateObject("janGraphics Library")
klappt's auch nicht;
Fehlermeldung: Objekterstellung durch ActiveX-Komponente nicht möglich (Nr. 429).

Hat jemand eine Idee, wo der Fehler liegt? Könnte es an einer falschen Registrierung der DLL liegen? Bei REGSVR32.EXE gibt's ja verschiedene Argumente - von denen ich aber keines verwendet habe.

Bin auch für jede alternative Konvertierungsmethode dankbar.


Schonmal besten Dank für Eure Unterstützung und Grüße, Wasi

uwek
26.03.2006, 22:48
Hallo,

Auszug aus dem Demo-VB-Projekt
' DLL initialisieren
On Local Error Resume Next
Set janConvDLL = CreateObject("janGraphics.Compendium")
If Err <> 0 Then
' DLL erst noch registrieren!
RegisterFile App.Path & "\janGraphics.dll", True
Err = 0
Set janConvDLL = CreateObject("janGraphics.Compendium")
If Err <> 0 Then
MsgBox "Fehler!" & vbCrLf & _
"Die DLL 'jangarphics.dll' konnte nicht initialisiert werden!", _
vbCritical, "FEHLER!"
Exit Sub
End If
End If

' Grafik konvertieren
sMsg = janConvDLL.convertEx(txtSource.Text, sFile, _
nWidth, nHeight, bTrans, nQuality)

If sMsg <> "" Then
MsgBox sMsg
Else
MsgBox "Datei wurde konvertiert!"
End If
End If

Modul RegisterDll
Option Explicit

'Hier alle benötigten API-Funktionen
Private Declare Function LoadLibrary Lib "kernel32" Alias _
"LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32" _
(ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CreateThread Lib "kernel32" _
(lpThreadAttributes As Any, ByVal dwStackSize As Long, _
ByVal lpStartAddress As Long, ByVal lParameter As Long, _
ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Private Declare Sub ExitThread Lib "kernel32" _
(ByVal dwExitCode As Long)
Private Declare Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function GetExitCodeThread Lib "kernel32" _
(ByVal hThread As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

'Die nachfolgende Funktion führt die Registrierung durch
Public Function RegisterFile(ByVal sFile As String, _
Register As Boolean) As Boolean

'Der Parameter sFile enthält die zu
'registrierende Datei (inkl. Pfad)
'Register: True -> Datei soll registriert werden
' False -> Datei soll deregistriert werden

Dim Result As Boolean
Dim Lib As Long
Dim sProc As String
Dim r1 As Long
Dim r2 As Long
Dim Thread As Long

On Local Error GoTo RegError

Result = False
Lib = LoadLibrary(sFile)
If Lib Then
sProc = IIf(Register, "DllRegisterServer", _
"DllUnregisterServer")
r1 = GetProcAddress(Lib, sProc)
If r1 Then
Thread = CreateThread(ByVal 0, 0, ByVal r1, _
ByVal 0, 0, r2)
If Thread Then
r2 = WaitForSingleObject(Thread, 10000)
If r2 Then
'Fehler aufgetreten
FreeLibrary Lib
r2 = GetExitCodeThread(Thread, r2)
ExitThread r2
Exit Function
End If
CloseHandle Thread
'OK
Result = True
End If
End If
FreeLibrary Lib
End If

RegError:
RegisterFile = Result
Exit Function

End Function

Wasi
26.03.2006, 23:40
Vielen Dank für Deinen Hinweis ... jetzt klappt's.