BMP,EMF,GIF,ICO,JPG,TIF,PNG,WMF konvertieren und Skalieren

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

BMP,EMF,GIF,ICO,JPG,TIF,PNG,WMF konvertieren und Skalieren

Post by Theo_Gottwald » 10. Dec 2017, 09:01

Das im Folgenden beschriebene Feature ist neu und daher erst ab der "Catseye.dll" Version 3.0.2.25 verfügbar.
Wer diese nicht hat bekommt die FM "unknown Command".
In diesem Fall kann man einfach die DLL nehmen, die ich hier an den Post angehängt habe, und damit die im MPR-Installationsverzeichnis vorhandene überschreiben. Ab dem nächsten Update sollte die neue DLL dann überall verfügbar sein.

Das Problem: Man hat 100 Bilder mit der neuen MEGAPIXEL Kamera gemacht und will diese nun wegsenden per E-Mail.
Da aber jedes Bild leicht 7 MB hat passen dann nur noch 2-3 Bilder in jede Mail.

Also was kann man tun?
Man muß jedes einzelne Bild "herunterrechnen", entweder auf eine niedrigere Qualität, oder auf eine geringere Auflösung.

Der MPR kann mit dem neuen Befehl nun auch Bild-Dateien aller Windows-üblichen unterschiedlicher Bildformate:
BMP, EMF, GIF, ICO, JPG, TIF, PNG, WMF
umwandeln und auch die Größe herunterrechnen.
Dabei wird die Aspekt-Ratio immer beibehalten, daher muß man nur die neue X-Auflösung angeben.

Wenn man (nur Konvertieren) aber sonst die Auflösung beibehalten will, gibt man einfach eine sehr große Zahl bei der Zielauflösung an. Da nur herunterskaliert aber nie hochskaliert wird, kann man so die Originalauflösung beibehalten.
Der neue Befehl ist dabei nur eine "Dreizeiler":

Code: Select all

' Quelldatei
VAR\$$SRC=?path\P1.png
' Zieldatei und Ziel-Dateiformat (ergibt sich aus Endung)
VAR\$$DES=?path\P2.jpg

' Die 1600 ist die neue X-Resolution, Y- wird automatisch berechnet aus dem Aspekt-Ratio
' Die 50 ist die Bildqualität, die muß ziwschen 1 und 100 liegen, je höher desto größer wird die Zieldatei
GRN\pic.|$$SRC|$$DES|1600|50
Die beiden letzten Parameter sind optional, lässt man diese weg, gilt als Zielauflösung 1920 (HD) und als Zielqualität 75.
Die Zielauflösung wird nur geändert, wenn das Originalbild eine größere Auflösung hat, als die angegebenen.
Ein "Upscaling" wird nicht gemacht. Gibt man also eine zu große Zahl (zum Beispiel "20000") als Zielauflösung an, dann wird einfach die vorhandene Auflösung beibehalten.
So kann man mit dem MPR nun skriptgesteuert Bildformate ineinander umwandeln und herunter skalieren.

Wie sieht so ein Skript nun in der Praxis aus?
Ich möchte einen Ordner per "Drag'n Drop" auf die kompilierte Skript.exe ziehen. Und dann soll in dem Ordner ein Unterorder "Small" erstellt werden. Und in diesem Unterordner "Small" will ich dann alle verkleinerten Bilder aus diesem Ordner.

Das folgende Skript funktionier nur als "EXE-Datei", also kompiliert.
Das liegt daran, dass der Term "$ev2$" hier verwendet wird.
Dieser löst sich zu dem Pfad eines Ordners auf, den man per Drag'n Drop auf die kompilierte EXE-Datei zieht.

Code: Select all

' +++ Drag Pic_Scaler.rem +++
' Zweck: Ordner mit Bildern kleiner skalieren
' erstellt am: 09.12.2017
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#FDC:Ask
'#MAN:ra
'
KRM\2

' Ziel X- Auflösung, 
' Y-Auflösung wird intern anhand Aspekt-Ratio berechnet
VAR\$$RES=1600
' Qualitätseinstellung (1-100)
VAR\$$QUA=85

VAR\$$SRP=$ev2$
' Wegen dem Verhalten von $ev2$ ist noch folgende Zeile nötig (trimmt "" weg)
VBT\$$SRP"
MBX\Bilder-Ordner: $crlf$$$SRP

NEF\$$SRP\
   GOTO enx
EEF\
VAR\$$DEP=$$SRP\Small

MKD\$$DEP
FEF\$$SRP|*.jpg|Doit|$$SRC
:enx
MBX\!
@

:Doit
IVC\$$SRC|$$DEP
   GOTO over
EVC\
GFT\$$SRC

' Dateiformat beibehalten
'VAR\$$DES=$$DEP\$v3$.$v4$

' Immer nach "Jpg" Konvertieren
VAR\$$DES=$$DEP\$v3$.jpg

GRN\pic.|$$SRC|$$DES|$$RES|$$QUA
:over
@

Wer das neue Feature lieber aus dem Editor testen möchte, kann dazu das leicht abgewandelte Skript hier nehmen.

Code: Select all

' +++ Pic_Scaler.rem +++
' Zweck: 
' erstellt am: 09.12.2017
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#FDC:Ask
'#MAN:ra
'
KRM\2

' Ziel X- Auflösung, 
' Y-Auflösung wird intern anhand Aspekt-Ratio berechnet
VAR\$$RES=1600
' Qualitätseinstellung (1-100)
VAR\$$QUA=85

VAR\$$SRP=?path\100Nikon\
VAR\$$DEP=$$SRP\Small

MKD\$$DEP
FEF\$$SRP|*.jpg|Doit|$$SRC
MBX\!
@

:Doit
IVC\$$SRC|$$DEP
   GOTO over
EVC\
GFT\$$SRC

' Dateiformat beibehalten
'VAR\$$DES=$$DEP\$v3$.$v4$

' Immer nach "Jpg" Konvertieren
VAR\$$DES=$$DEP\$v3$.jpg

GRN\pic.|$$SRC|$$DES|$$RES|$$QUA
:over
@
Und hier noch eine Version, wo man eine einzelne Datei auf die EXE zieht, danach wird ein Ordner "Small" erstellt - da wo die Bilddatei herkommt - und dann wird da eine verkleinerte Version im .jpg-Format abgelegt.

Code: Select all

' +++ SF_Drag Pic_Scaler.rem +++
' Zweck: 
' erstellt am: 09.12.2017
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#ICS:5
'#MAN:ra
'
KRM\2

' Ziel X- Auflösung, 
' Y-Auflösung wird intern anhand Aspekt-Ratio berechnet
VAR\$$RES=503
' Qualitätseinstellung (1-100)
VAR\$$QUA=85

VAR\$$SRP=$ev2$
'VAR\$$SRP=F:\00_S-DB\01_JPGs\00_Facebk\28 Health\23 Astaxanthin\

VBT\$$SRP"
MBX\Bilder-Ordner: $crlf$$$SRP

NEF\$$SRP
   GOTO enx
EEF\

GFT\$$SRP
VAR\$$PTH=$v5$$v6$
VAR\$$DEP=$$PTH\Small
MBX\$$DEP

MKD\$$DEP
VAR\$$SRC=$$SRP

GSB\Doit
:enx
MBX\!
@

:Doit
SBT\1+|$$SRC
IVC\$$SRC|$$DEP
   GOTO over
EVC\
GFT\$$SRC

' Immer nach "Jpg" Konvertieren
VAR\$$DES=$$DEP\$v3$.jpg

GRN\pic.|$$SRC|$$DES|$$RES|$$QUA
:over
RET\

User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Re: BMP,EMF,GIF,ICO,JPG,TIF,PNG,WMF konvertieren und Skalier

Post by Theo_Gottwald » 14. Mar 2018, 14:29

Nach den Infos die ich aktuell erhalten habe, ist noch nicht klar, ab wann die neue DLL im MPR enthalten sein wird.
Aber nach aktuellem Stand wird der Befehl erweitert und kann nun nicht nur Grafik-Dateien im Format konvertieren sondern auch beliebig skalieren, und bei JPG kann man die Qualitätsstufe angeben.
Ich hänge die benötigte (und zwischenzeitlich verbesserte) DLL nun hier an den Post an. So muß man nicht bis zum Update warten.
Um das "Upscaling" zu aktivieren, muß ein weitere Parameter angegeben werden und zwar mit "1". Fehlt dieser, wird bei einer höheren Auflösung nicht "upgescaled".

Code: Select all

GRN\pic.|SRC|DEST|NewX|Qual|1
In Tests konnte ich mit dieser Version Bilder bis 670 Megapixel skalieren/umwandeln.

Sinnvollerweise gibt es dazu ein weiteres neues Feature,
man kann nun die X- und Y-Auflösung einer Grafikdatei ermitteln:

VAR\$$DAT=?path\Bewegt sich.jpg
' Picture get resolution
GRN\pgr.|$$DAT>$$ERG
MBX\Die Auflösung des Bildes ist: $$ERG
@

Update auf Version 4.0 am 18.04.2018
Catseye.zip
Catseye.dll Version 4
(132.62 KiB) Downloaded 250 times

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 1 guest