Dateigröße von Bildern per Batch anpassen?
Hallo Zusammen,
ich habe bereits ein Batch das per "convert" Bildergößen (viele Bilder) ändert ( convert -resize 100x100.. usw.).
Nun habe ich aber noch die zusätzliche Anforderung bekommen, dass alle Bilder maximal ( z.B.) 50KB groß sein dürfen.
Ist solch eine Dateigrößenanpassung irgendwie (per Batch / Imagemagick) lösbar?
Ich habe leider nichts dazu gefunden.
Wäre für einen Tipp sehr dankbar.
Viele Grüße,
nummer80
ich habe bereits ein Batch das per "convert" Bildergößen (viele Bilder) ändert ( convert -resize 100x100.. usw.).
Nun habe ich aber noch die zusätzliche Anforderung bekommen, dass alle Bilder maximal ( z.B.) 50KB groß sein dürfen.
Ist solch eine Dateigrößenanpassung irgendwie (per Batch / Imagemagick) lösbar?
Ich habe leider nichts dazu gefunden.
Wäre für einen Tipp sehr dankbar.
Viele Grüße,
nummer80
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161230
Url: https://administrator.de/contentid/161230
Ausgedruckt am: 05.11.2024 um 14:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo nummer80!
Du kannst zwar per Batch die Dateigröße feststellen - zB mit
- wie Du die Bilder aber schlanker bekommst (zB stärkere jpg-Kompression), müsstest Du Dir selbst überlegen ...
Grüße
bastla
Du kannst zwar per Batch die Dateigröße feststellen - zB mit
for /f "delims=" %%i in ('dir /b /a-d "D:\Dein Bilderordner\klein\*.jpg"') do if %%~zi gtr 51200 echo Zu verkleinern: %%i (derzeit: %%~zi Bytes)
Grüße
bastla
Zitat von @bastla:
Hallo TH40!
Kannst Du kurz beschreiben, wie Du damit automatisiert die Dateigröße auf max 50 KB bekommst?
Grüße
bastla
Hallo TH40!
Kannst Du kurz beschreiben, wie Du damit automatisiert die Dateigröße auf max 50 KB bekommst?
Grüße
bastla
Servus,
ja kein Problem:
1. Zunächst benötigt man dazu IrfanView: http://www.irfanview.de/
2. Dann benötigt man noch das RIOT-Plugin: http://download.criosweb.ro/download.php?sid=R-dll
3. Die riot.dll gehört in den Irfan-View Plugin-Order, die FreeImage.dll in das root-Verzeichnis vom Irfan-View.
4. Im Programm - File -> Batch Conversion/Rename ->
5. Dort kann man unter Options die gewünschten Werte eintragen.
6. Dann noch per Add oder Add all die Files einbinden und auf "Start Batch" gehen.
7. Fertig
Viele Grüße,
TH40
moin nummer80,
die meisten PictureProgramme können zwar eine Batchverarbeitung aber keine KommandoZeile.
als Alternative könnstest Du "Boxwech" benutzen. Das konfigurierst Du auf den Namen der Batchdatei und Klickst dann Die ganzen schritte Durch in Irfanview.
Einmal eingerichtet erledigt Boxwech diese ganze Klickabfolge Superschnell. Ungefähr nach dem Prinzip eines Makros.
Gruß Phil
die meisten PictureProgramme können zwar eine Batchverarbeitung aber keine KommandoZeile.
als Alternative könnstest Du "Boxwech" benutzen. Das konfigurierst Du auf den Namen der Batchdatei und Klickst dann Die ganzen schritte Durch in Irfanview.
Einmal eingerichtet erledigt Boxwech diese ganze Klickabfolge Superschnell. Ungefähr nach dem Prinzip eines Makros.
Gruß Phil
Hallo nummer80!
Quick & dirty : Da die Einstellungen ja in einer Datei (ev ".ini", habe gerade kein "IrfanView" zur Hand) gespeichert sein dürften, könntest Du mehrere Versionen dieser Datei (für unterschiedliche KB-Werte) erstellen und vorweg die richtige Version über die "Standard-Datei" kopieren ...
Grüße
bastla
Quick & dirty : Da die Einstellungen ja in einer Datei (ev ".ini", habe gerade kein "IrfanView" zur Hand) gespeichert sein dürften, könntest Du mehrere Versionen dieser Datei (für unterschiedliche KB-Werte) erstellen und vorweg die richtige Version über die "Standard-Datei" kopieren ...
Grüße
bastla
MoinMoin
so, ich denke jetzt sollte es passen.
1. Plugin iv_formats installieren download von : www.irfanview.com/plugins.htm
2. in Irfanview unter Datei Batch / Stapel Konvertierung die Optionen einstellen
Unter Zielformat ist dann die Größe versteckt, dort auf 100 KB setzen und speichern
3. In der CommanLine den Parameter /advancedbatch angeben
c:\programme\irfanview\i_view32.exe d:\irfan_input\*.jpg /resize=(100,0) /aspectratio /advancedbatch /convert=d:\irfan_pics_for_the_web\*.jpg
Hoffe Dir ist damit geholfen
so, ich denke jetzt sollte es passen.
1. Plugin iv_formats installieren download von : www.irfanview.com/plugins.htm
2. in Irfanview unter Datei Batch / Stapel Konvertierung die Optionen einstellen
Unter Zielformat ist dann die Größe versteckt, dort auf 100 KB setzen und speichern
3. In der CommanLine den Parameter /advancedbatch angeben
c:\programme\irfanview\i_view32.exe d:\irfan_input\*.jpg /resize=(100,0) /aspectratio /advancedbatch /convert=d:\irfan_pics_for_the_web\*.jpg
Hoffe Dir ist damit geholfen
moin,
ich hab mal etwas zusammengeschruppt wobei man die Auflösung die Qualität und die Dateigröße den Anforderungen entsprechend einstellen kann.
Batch Bilder größen
Gruß Phil
ich hab mal etwas zusammengeschruppt wobei man die Auflösung die Qualität und die Dateigröße den Anforderungen entsprechend einstellen kann.
Batch Bilder größen
:: schnipp----- ResizePics.cmd ----
@echo off&setlocal
set "iPath=%ProgramFiles%\IrfanView\i_view32.exe"
set "CurrentPictPath=E:\Pics\"
set "CurrentPict=*.jpg"
:: Darf nicht im Selben Verzeichnis sein wie die Quelle
set "ResizedPath=E:\ResPics\"
:: Maximale Auflösung einstellen
:: "ResDimMax=" -> Keine Obere Auflösungsgrenze
:: "ResDimMax=50" -> Gibt den Wert der Größten möglichen Auflösung an
set "ResDimMax=800"
:: Minimale Auflösung einstellen
:: "ResDimMin=" -> Qualitäts einstellung hat Vorrang
:: "ResDimMin=0" -> Qualitäts Einstellung Bleibt 100%
:: "ResDim=50" -> Qualität wird ab dieser Auflösung Heruntergesetzt
set "ResDimMin=800"
:: Einheit der Dateigröße (B, KB, MB)
set "SizBits=KB"
:: Maximale Dateigröße einstellen
set "ResSizMax=50"
:: Minimale Dateigröße einstellen (in KB)
:: sollte wenigstens 500 bytes kleiner als ResSizMax sein (wird automatisch ausgerechnet wenn gleich)
set "ResSizMin=50"
:: Minimale mögliche Bildqualität einstellen (Minimal 25 empfohlen)
set "ResQuaMin=30"
:: Ende Einstellungen
::
set "CurrentPicDat=%Temp%\CPictdat"
if /i "%SizBits%" == "B" set /a SizBits = 1
if /i "%SizBits%" == "KB" set /a SizBits = 1024
if /i "%SizBits%" == "MB" set /a SizBits = 1048576
if defined ResSizMax set /a ResSMax = ResSizMax * SizBits
if defined ResSizMin set /a ResSMin = ResSizMin * SizBits
if defined ResSizMin if "%ResSMin%" geq "%ResSMax%" set /a ResSMin - = 500
for %%i in ("%CurrentPictPath%%CurrentPict%") do echo Bearbeite "%ResizedPath%%%~nxi"&set "CurrentPict=%%~nxi"&set "CurPict=%%~i"& call :dimensons
pause
goto :eof
:dimensons
set "LongSize=0"
"%iPath%" "%CurPict%" /info="%CurrentPicDat%"
if not "%OS%" == "!OS!" setlocal enabledelayedexpansion
for /f "tokens=4,6" %%j in ('findstr /b /c:"Image dimensions =" "%CurrentPicDat%"') do (
for %%l in (%%j %%k) do (
if !LongSize! lss %%l set "LongSize=%%l"
) )
for %%i in ("%CurPict%") do set /a PictSize = %%~zi
if not defined ResDimOld if not defined ResDimOld (set "ResDimOld=%ResDimMax%") else set "ResDimOld=%LongSize%"
if not defined ResQua (set "AQuali=100") else set "AQuali=%ResQua%"
if defined Test goto :SizeMax
:DimMax
if not defined ResDimMax goto :DimMin
if %ResDimMax% leq %LongSize% (set "Resolution=/resize=(%ResDimMax%,%ResDimMax%)"&goto :Quali)
:DimMin
if not defined ResDimMin goto :Quali
if %ResDimMin% geq %LongSize% (set "Resolution=/resize=(%ResDimMin%,%ResDimMin%)")
:Quali
if defined ResQua set "Qualit=/jpgq=%ResQua%"
if not defined Test goto :Picture
:SizeMax
if not defined ResSizMax goto :SizeMin
if %ResSMax% leq %PictSize% goto :Kleiner
if not defined ResSizMin echo %LongSize%x, %AQuali%%%, %PictSize% byte&echo.&endlocal&goto :eof
:SizeMin
if not defined ResSizMin goto :Picture
if %ResSMin% geq %PictSize% goto :groesser
echo %LongSize%x, %AQuali%%%, %PictSize% byte&echo.&endlocal&goto :eof
:Picture
"%iPath%" "%CurrentPictPath%%CurrentPict%" %Qualit% %Resolution% /aspectratio /resample /convert="%ResizedPath%%CurrentPict%"
if defined Test if not defined ResSizMax (echo %LongSize%x, %AQuali%%%, %PictSize% byte&echo.&endlocal&goto :eof)
set "CurPict=%ResizedPath%%CurrentPict%"
set "Test=1"&goto :dimensons
:kleiner
if not defined Test goto :SizeMin
if defined ResDimMax (
set /a "ResDim= ResDimMax - ( ResDimMax / 20 )"
) else set /a "ResDim= LongSize - ( LongSize / 20 )"
if defined ResDimMin (
if !ResDimMin! leq %ResDim% (
set "ResDimMax=%ResDim%"
) else if not !ResDimMin! == %LongSize% (
set "ResDimMax=%ResDimMin%"
) else (
if not defined ResQua (
set "ResQua=95"
) else set /a ResQua - = 5
)
) else (
if not defined ResQua (
set "ResQua=95"
) else set /a ResQua - = 5
)
if defined ResQua (
if defined ResQuaMin (
if !ResQuaMin! leq %ResQua% (set "ResQua=%ResQua%") else echo Quali minimum erreicht&echo %LongSize%x, %AQuali%%%, %PictSize% byte&echo.&goto :eof
) else set "ResQua=%ResQua%"
)
set "Test=" & goto :DimMax
:groesser
if not defined Test goto :Picture
if defined ResDimMax (
set /a "ResDim= ResDimMax + ( ResDimMax / 25 )"
) else set /a "ResDim= LongSize + ( LongSize / 30 )"
if %ResDimOld% geq %ResDim% (
set "ResDimMax=%ResDim%"
set "LongSize=%ResDim%"
set "ResQua="
) else (if defined ResQua (
set "ResQua="
) else echo Maximum Dimension erreicht&echo %LongSize%x, %AQuali%%%, %PictSize% byte&echo.&goto :eof
)
)
set "Test=" & goto :DimMax
:: schnapp----- ResizePics.cmd ----
Gruß Phil