VisualBasic Wie ImageMagick in VisualBasic 2008?

Geldmann3

Cadet 1st Year
Registriert
Feb. 2011
Beiträge
14
Hallo, kann mir vielleicht jemand erklären wie ich in Visual Basic 2008 auf die Funktionen von ImageMagick zugreifen kann? Um beispielsweise ein Bild in ein anderes Format zu konvertieren?

Danke im Voraus.
 
Wird die bei der Installation von ImageMagick nicht, wenn Häckchen gesetzt automatisch mit installiert? Oder ist das wieder was anderes?

Was ich natürlich auch machen könnte, in Visual basic eine .bat erstellen und diese dann vom selbigen Programm im Hintergrund ausführen lassen. Ist aber eine schmutzige Lösung und es könnte theoretisch Schadcode injiziert werden...
 
Zuletzt bearbeitet:
es wird keine API automatisch installiert, bedenke aber dass auch die ganzen APIs in der regel nichts anders machen als die *.exe auszuführen mit den "generierten" parametern, außer es gibt für deine programmiersprache eine native API dafür

für VB seh ich jedenfalls eh keine API, aber es gibt .NET/C# eine, damit sollte es gehen, du wirst aber Code mischen müssen
 
Ich habe jetzt ein echt komisches Problem festgestellt. Ich erstelle mit meinem Programm eine .bat Datei mit folgenden Inhalt.
Code:
convert C:\Users\Geldmann3\Pictures\1609.jpg C:\Testbild.png
Wenn ich nun versuche diese von meinem Programm erstellte Datei manuell auszuführen, passiert gar nichts. Es öffnet sich nur kurz CMD. Der Code scheint aber korrekt zu sein, wenn ich eine neue .bat Datei erstelle und dort den selben Text einfüge funktioniert das Script.

Kann es sein, dass Visual Basic die Datei irgendwie in einem anderen Format speichert als mein Text Editor und es deshalb nicht funktioniert?

Ich schreibe die Datei folgendermaßen
Code:
My.Computer.FileSystem.WriteAllText("C:\TEMP.bat", "convert " & TextBox1.Text & " C:\Testbild.png", True)
Ich sehe gerade, das eine ist UTF8 und das andere ANSI, ok, ich denke das kann ich ändern...

Edit: Jo habs hinbekommen,
Code:
My.Computer.FileSystem.WriteAllText("C:\TEMP.bat", "convert " & TextBox1.Text & " C:\Testbild.png", True, System.Text.Encoding.Default)
 
Zuletzt bearbeitet:
wenn du es schon so machst würd ich dir den tipp geben gar keine bat dateien zu verwenden sondern dir sozusagen den befehl in deinem code zusammenzubasteln und die exe direkt aufzurufen, so ist gewährleistet dass die *bat dateien nicht code enthalten der was ganz anderes macht als geplant. zudem hast du dann die möglichkeit einfacher die parameter dynamisch zu übergeben
 
Jetzt wo du es sagst, stimmt, so ist es wahrscheinlich besser! Wahrscheinlich werde ich es ändern.

Jetzt aber nochmal etwas anderes. Ich versuche gerade ein JPG Bild mit 5% zu komprimieren und zwar so.

Die .bat Datei ->>
Code:
convert "C:\Users\Geldmann3\Pictures\Bild 2.png" -quality 5% "C:\Bilder\Billig 4.jpg"
Leider funktioniert das nicht. Wie wäre es richtig?
 
beschreibe mal den fehler und schau mal hier http://www.imagemagick.org/script/convert.php bwz. generell auf der seite nach der verwendung, könnte sein dass 5% evtl zu wenig ist

auch könnte es sein dass die batch falsch verarbeitet wird. d.h probier erst immer die funktionsfähigkeit des befehls mit der normalen eingabeaufforderung/cmd
 
Die Seiten habe ich mir schon mehr oder weniger durchgelesen, leider sind dort alle Beispiele ohne Anführungszeichen.

In CMD wird folgende Fehlermeldung ausgespuckt.
Code:
Magick: unable to open image `C:\Users\Geldmann3\Pictures\Bild2.png': No such file or directory @ er
ror/blob.c/OpenBlob/2588.
Magick: unable to open file `C:\Users\Geldmann3\Pictures\Bild2.png' @ error/png.c/ReadPNGImage/3099.

Das war eine gute Idee. Die Datei existiert gar nicht. Doch ich kann mir nicht vorstellen, wie das passiert ist, denn ich habe sie in meinem Programm mit einem OpenFileDialog ausgewählt. Hmm, Geisterdateien... Das muss ich nochmal genauer untersuchen :eek:

Mit dem richtigen Dateinamen gehts.
---
Jetzt habe ich wieder mit meinem Programm eine TEMP.bat erstellt.
Code:
convert "C:\Users\Geldmann3\Pictures\Ichfinal.png" -quality 5% "C:\Bilder\Billig.jpg"
Das funktioniert in CMD tadellos, in meiner Batch Datei allerdings nicht mehr. Diesmal ist die Kodierung allerdings ANSI. Diese Zeile funktioniert in Batch Dateien nicht, das verstehe ich nicht.
 
Zuletzt bearbeitet:
die batch datei ist auch im pfad bei dem sich die convert.exe befindet? ansonsten musst du natürlich den kompletten pfad angeben:

zb:

"c:\programme\im\convert.exe" "C:\Users\Geldmann3\Pictures\Ichfinal.png" -quality 5% "C:\Bilder\Billig.jpg"

übrigens kannset die *.bat auch über CMD aufrufen, dann bekommst auch eine rückmeldung was schlief läuft
 
Das mit CMD ist eine gute Idee, das ich den Pfad angeben muss sollte eigentlich nicht sein, da sich convert.exe im System32 Verzeichnis befindet und es sonst auch immer so funktioniert hat. Ich werde es trotzdem mal versuchen.
Ergänzung ()

Ich habe es herausgefunden, es lag an dem "%" hinter quality. Ohne geht es, komisch dass das direkt in CMD noch geht, in einer Batch Datei so allerdings nicht mehr.
Aha, hängt wohl hiermit zusammen http://support.microsoft.com/kb/75634/de
 
Zuletzt bearbeitet:
Zurück
Oben