Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: jagger am Juli 11, 2017, 16:27:28

Titel: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 11, 2017, 16:27:28
Guten Tag,
wie kann man mit dem MS-InkPicturecontrol Bilder als .jpg-Datei speichern?

'---Byte Array, Variant geht nicht !
Dim gif() As Byte
   '--jetzt die Unterschrift in den Bytearray übernehmen
   gif = Me!inkPictureU.Ink.Save(IPF_GIF, IPCM_Default)
   ' -- und jetzt in einer Datei speichern:
   Open "C:\irgendwas\" & Me![blablabla] & ".gif" For Binary Access Write As #1 Len = UBound(gif)
   Put #1, 1, gif
   Close #1

erzeugt prima .gif-Dateien.
Was muss man verändern, wenn es eine .jpg-Datei werden soll?
Hat jemand einen Tipp?
Vielen Dank!

A2000 und A2016 auf W10

Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Beaker s.a. am Juli 11, 2017, 16:39:05
ZitatOpen "C:\irgendwas\" & Me![blablabla] & ".gif" For Binary Access Write As #1 Len = UBound(gif)
Vielleicht das richtige Suffix übergeben?
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 11, 2017, 16:50:51
Hallo Beaker,

das habe ich schon probiert. Alle ".gif" in ".jpg" geändert.
Die erzeugte .jpg-Datei funktioniert dann aber nicht.

LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: markusxy am Juli 11, 2017, 17:34:35
Zitat von: jagger am Juli 11, 2017, 16:50:51
Hallo Beaker,

das habe ich schon probiert. Alle ".gif" in ".jpg" geändert.
Die erzeugte .jpg-Datei funktioniert dann aber nicht.

LG
jagger
Das ist doch Unsinn.
Du kannst doch nicht einfach eine Dateiendung ändern.
Außer bei Dateien wie csv oder txt die ja kein echtes Format besitzen.
Aber wenn du bei einem csv einfach pdf hinschreibst wird es ja kein PDF.

Eine Endung steht für ein Format, also für einen konkreten Dateiaufbau.
Ansonsten könnte ja kein Programm ein Bild anzeigen, wenn das Format nicht klar wäre.

Du willst also die Daten von einem Format in ein anderes konvertieren.
Das ist eine Menge Arbeit. Such dir also ein Programm, das dir die Arbeit abnimmt.

LG Markus
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 11, 2017, 18:36:57
@markus888,
wenn man googelt findet man dazu eben, dass das InkPicture Control mit .jpg, .bmp, .png, or .gif Formaten umgehen kann. Es müssten also bestimmt nur einige Parameter verändert werden, um ein .jpg zu erzeugen.
Dass man durch Veränderung der Erweiterung nicht das Dateiformat ändern kann, ist schon klar.
Ich wollte nur auf den Tipp von Beaker eingehen.

LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Lachtaube am Juli 11, 2017, 19:43:40
Dann verweise doch bitte auf einen Deiner Google-Funde, wo das InkPicture-Control dazu befähigt ist, ein jpeg zu speichern.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: markusxy am Juli 11, 2017, 22:32:51
@jagger,
wenn du schon die Methoden dazu kennst, würde es ausreichen in die OnlineHilfe  (https://msdn.microsoft.com/en-us/library/ms823115.aspx)zu schauen. Dort erfährst du die Parameter die geändert gehören. Hiermit  (http://www.x360soft.com/image-activex-ocx/x360-image-viewer-activex-ocx.html) habe ich getestet. Mir ging es auch darum binäre Daten ohne Zwischenspeichern im Filesystem anzuzeigen. Dafür gibt es zwar verschiedene Möglichkeiten, aber die Klasse bietet darüber hinaus noch vielfältige Möglichkeiten an.

LG M
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 12, 2017, 08:52:11
@markus888,
genau in dieser OnlineHilfe kann ich eben nichts darüber finden. Sonst hätte ich ja nicht gefragt.  ;)

@Lachtaube,
von speichern habe ich aber erst mal nicht gesprochen.
Ich sprach von umgehen, hoffe aber dass es auch .jpg speichern kann.
Mit . gif geht es ja auch. Nur weiss ich eben nicht wie.
Hier der gewünschte Link: https://technet.microsoft.com/de-de/sysinternals/ms839534 (https://technet.microsoft.com/de-de/sysinternals/ms839534)
Vielleicht findet man da eine Erklärung. Ich seh da leider nichts.

LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: markusxy am Juli 12, 2017, 09:35:43
Zitat von: jagger am Juli 12, 2017, 08:52:11
@markus888,
genau in dieser OnlineHilfe kann ich eben nichts darüber finden. Sonst hätte ich ja nicht gefragt.  ;)

Es steht schon da, man muss nur die Augen aufmachen und den Verstand auch benutzen.
Hier Deine Anweisung:

inkPictureU.Ink.Save(IPF_GIF, IPCM_Default)


Was ist Ink?
In der Hilfe wird gezeigt, dass die Eigenschaft Ink ein Objekt liefert.
Alle Klassen und Interfaces von InkPicture sind aufgeführt, dann schaust du bei der richtigen Klasse unter der Methode save nach und hast alle Infos. ;)

LG M
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 12, 2017, 09:46:33
@markus888,
da bin ich auch angekommen, sehe nur (noch) nicht richtig durch. Deshalb frage ich ja hier.
LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: markusxy am Juli 12, 2017, 10:09:10
Zitat von: jagger am Juli 12, 2017, 09:46:33
@markus888,
da bin ich auch angekommen, sehe nur (noch) nicht richtig durch. Deshalb frage ich ja hier.
LG
jagger

was genau ist unklar?

Wie ich grade sehe, ist die Klasse ja ein Bestandteil des Betriebssystems und bereits am PC installiert.
Du könntest also auch einfach einen Verweis auf die Klasse legen und dann mit dem Objektkatalog arbeiten. Möglicherweise ist es auch von der installierten Version abhängig, welche Formate gespeichert werden können.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: PhilS am Juli 12, 2017, 10:37:33
Zitat von: markus888 am Juli 12, 2017, 10:09:10was genau ist unklar?
Für mich als Mitleser ist nach wie vor unklar, wie man den Inhalt des Ink-Controls als JPG speichern kann. - Das war ja auch die ursprüngliche Frage.

Ich würde nach einen kurzen Blick in die Doku davon ausgehen, dass das nicht möglich ist.

Da @markus888 so vehement darauf hinweist, dass man nur die Doku genau genug lesen muss, um die Lösung zu finden, bin ich auf einen konkreten Lösungsvorschlag gespannt.

Sollte ich jedoch mit meiner voreiligen(?) Annahme richtig liegen und es ist nicht möglich mit dem Ink-Control direkt JPGs zu erzeugen, dann müsste man das Output des Controls mit anderen Mitteln (GDI+ könnte ein Ansatz sein) nachträglich in das JPG-Format konvertieren.

Für mich stellt sich aber auch die Frage: Warum unbedingt JPG?
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Lachtaube am Juli 12, 2017, 10:40:54
Da steht nur, dass man Bildchen in das InkPicture-Control laden kann - dass man die InkStrokes selbst in einem anderen Format ablegen kann, ist nirgendwo beschrieben und würde auch dem Sinn der Sache widersprechen.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 12, 2017, 11:38:02
@PhilS, Danke!

@Lachtaube,
Ich benutze das MS-InkPicturecontrol dafür,
dass man einen Auftrag unterschreiben (auf dem Tablet) kann.
Wenn der Auftrag (Bericht als Print oder als PDF) dann ausgedruckt wird, ist die Unterschrift da drunter.
Bei einigen Tablets (W10) hat Access Probleme die ".Gif-Unterschrift" im Bericht anzuzeigen und auszudrucken.
Mit .jpg gibt es diese Probleme nicht.
Warum soll es dem Sinn der Sache widersprechen eine Datei als .jpg abzuspeichern?

LG
jagger

Bitte jetzt keine Belehrung über Datenschutz und Unterschriften...!
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: markusxy am Juli 12, 2017, 12:08:20
@PhilS,
die onlineHilfe hätte ihm zeigen sollen, dass es keine Konstanten für sein Vorhaben gibt.
Meiner Meinung nach sollten Programmierer ja in der Lage sein eine Hilfe zu benützen.
Wie sollen sie sonst Probleme lösen, wenn sie nicht in der Lage sind die Hilfe zu verwenden?

Allerdings habe ich ihm auch schon im meinem zweiten Post eine Klasse gezeigt mit dem es gehen würde.
Natürlich ist er darauf nicht eingegangen.

Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 12, 2017, 12:21:43
@markus888,
ich beschäftige mich in der onlineHilfe mit der Klasse, auf die Du mich hingewiesen hast. Vielleicht finde ich ja dort eine Lösung oder versetze mich zumindest gleichzeitig in die Lage, ein Hilfe zu benutzen.

LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Lachtaube am Juli 12, 2017, 16:59:44
Einige ActiveX-Controlls verweigern beim Drucken den erwarteten Dienst. Ein Bildsteuerelement mit einem GIF sollte aber IMHO nicht dazu gehören. Wenn das nicht hilft, kopiere die Unterschrift in's Clipboard und speichere den Inhalt als Enhanced Metafile, Bitmap (oder nach eigener Erweiterung als JPEG) ab. Stephen Bullens PastePict (http://www.oaltd.co.uk/excel/) sollte als Grundgerüst dazu brauchbar sein.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: daolix am Juli 12, 2017, 18:28:02
hallo
als erweiterung, um es als jpg zu speichern könntest du dann das  mdlGDIPlus (http://www.mosstools.de/index.php?option=com_content&view=article&id=77)  modul von Sascha Trowitzsch verwenden.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 13, 2017, 09:26:11
Hallo,
also, ich habe schon mal herausgefunden, dass man mit dem MS-InkPicturecontrol nur .gif abspeichern kann.
https://www.codeproject.com/Articles/557738/UsingplusMicrosoftplusInkplusPicturepluscontrol (https://www.codeproject.com/Articles/557738/UsingplusMicrosoftplusInkplusPicturepluscontrol)

Aber das steht bestimmt auch ganz konkret und schnell zu finden in der onlineHilfe, gelle!  ;)

@daolix: ich werde das probieren, Danke!
@alle: vielen Dank für die Hilfestellungen.
LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Lachtaube am Juli 13, 2017, 11:22:39
Hier wäre die erwähnte Möglichkeit, die Geschichte über die Zwischenablage zu steuern. Ob man dem Steuerelement gleich ein EMF entlocken kann, weiß ich nicht.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: markusxy am Juli 13, 2017, 11:34:54
Zitat von: jagger am Juli 13, 2017, 09:26:11
Hallo,
also, ich habe schon mal herausgefunden, dass man mit dem MS-InkPicturecontrol nur .gif abspeichern kann.
https://www.codeproject.com/Articles/557738/UsingplusMicrosoftplusInkplusPicturepluscontrol (https://www.codeproject.com/Articles/557738/UsingplusMicrosoftplusInkplusPicturepluscontrol)

Aber das steht bestimmt auch ganz konkret und schnell zu finden in der onlineHilfe, gelle!  ;)

Ein Blick in die Hilfe zeigt, dass er vier Konstanten für das Format und drei für die Kompression gibt.
https://msdn.microsoft.com/en-us/library/ms820341.aspx (https://msdn.microsoft.com/en-us/library/ms820341.aspx)
Und ja es bringt schon was, wenn man in der Lage ist mit der Hilfe umzugehen, wenn es um so simple Dinge wie Konstanten geht. Dann muss man auch nicht langwierig herumsuchen, bis man jemanden findet der einem sagt was geht und was nicht.
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 16, 2017, 15:10:19
@Profiprogrammierer888,

sicherlich hast Du da prinzipiell recht.
Aber, wenn ich jemanden höflich nach der Uhrzeit frage,
will ich dann hören oder lesen wie man die Dinger baut oder
wo es welche zu kaufen gibt?
Ein "nein, geht nicht" weil dort und dort diese oder jene Konstanten nicht vorhanden sind, hätte der Sache mehr geholfen und auch sicherlich Zeit gespart.

LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Lachtaube am Juli 16, 2017, 15:25:12
Jagger, hast Du in meinem letzten Beitrag gesehen, dass da ein Beispiel zum Testen im Anhang steckt?
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 17, 2017, 10:13:40
Hallo Lachtaube,
oh, das sieht gut aus.
Bin erst heute abend wieder an einem Rechner mit Acc2016.
Acc2000 kann die Datei nicht öffnen.
Ich werde es heute abend gleich mal ansehen!

Danke!
LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: jagger am Juli 19, 2017, 16:26:14
Hallo,

sehr oft findet sich die Frage, wie man das InkPicturecontrol leert oder "cleart". So geht es, z.B. auf einem Button:

Private Sub Button_Click()
    Me!inkPicture.Object.Ink.DeleteStrokes
    Me!inkPicture.Requery   
End Sub

LG
jagger
Titel: Re: MS-InkPicturecontrol als .jpg speichern
Beitrag von: Lachtaube am Juli 19, 2017, 16:52:18
Das geht auch - oder man weist ein neues Ink-Objekt dem InkPicture wie im Beispiel zu.