PDA

View Full Version : Create thumbnails



derniwi
01.08.2011, 08:16 PM
Hi,

asked by a user here is a script for creating thumbnails (CreateThumbnails.cmd):

@echo off
rem Thumbnail creation with IrfanView
cls
setlocal
echo Create thumbnails
echo -----------------

rem ************
rem * Settings *
rem ************

rem Thumbnail width
set width=80

rem File extension
set filetype=*.jpg

rem JPEG quality
set quality=50

rem Source path of the pictures
set source=R:\pics

rem Prefix for thumbnails
set prefix=TN-

rem Thumbnail sub directory name
set thumbnail=thumbnail

rem Silent mode?
rem Set silent to 0 means see all messages
rem Set silent to 1 means see just just the processed directories
rem Set silent to 2 means see no messages
set silent=0

rem Create thumbnails always
rem Set createallways to 0 if you like to create thumbnails for new files only
rem Set createallways to 1 to create new and overwrite existing thumbnails
set createallways=0

rem Resize what?
rem set resize=/resize=(%width%,%width%)
set resize=/resize_long=%width%
rem set resize=/resize_short=%width%

rem Path to Irfan view
if /i "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (
rem Path to IrfanView on x64 Windows
set iview="%ProgramFiles(x86)%\IrfanView\i_view32.exe"
) else (
rem Path to IrfanView on x86 Windows
set iview="%ProgramFiles%\IrfanView\i_view32.exe"
)
if not exist %iview% goto noIview

rem *******************
rem * Script function *
rem *******************
rem Check source path
if not exist "%source%\." goto nosource

rem Process the source directory
for /f "delims=" %%a in ('pushd "%source%"^&cd^&popd') do call :createthb "%%~na" "%%a"

rem Get directory structure and call the routine for converting
for /f "delims=" %%a in ('dir /s /b /ad "%source%"') do call :createthb "%%~na" "%%a"

echo Finished.
goto end

rem Create the thumbnails
:createthb
rem First check if we are not in a thumbnail directory
if /i "%~1" equ "thumbnail" goto :eof

rem Check if the thumbnail subdirectory exists
if not exist "%~2\thumbnail" md "%~2\thumbnail"

rem Create thumbnails
if "%silent%" leq "1" echo Processing "%~2"...
for /f "delims=" %%b in ('dir /b /a-d "%~2\%filetype%"') do call :createthb2 "%~2" "%%~b"
goto :eof

rem Create thumbnail if it does not exist
:createthb2
rem if thumbnail exist => skip
if exist "%~1\%thumbnail%\%prefix%%~2" (
if "%silent%" equ "0" echo Thumbnail "%~1\%thumbnail%\%prefix%%~2" for "%~1\%~2" found.
if "%createallways%" equ "0" goto :eof
)

rem Create thumbnail
if "%silent%" equ "0" echo Creating thumbnail for "%~1\%~2".
start "IrfanView" /wait %iview% "%~1\%~2" /resize=(%width%,%width%) /aspectratio /resample /jpgq=%quality% /convert="%~1\%thumbnail%\%prefix%$F"
goto :eof

rem IrfanView could not be found.
:noiview
echo IrfanView not found in the given path:
echo %iview%
goto end

rem Source path does not exist
:nosource
echo Source path
echo %source%
echo not found. Please check the path.
goto end

rem End of the script
:end
pause
endlocal

The script searches for files of type JPG

set filetype=*.jpg

in the source folder

set source=R:\pics

It will create thumbnail files of the search result with a size of

set width=80

Resize the image an set the size like

set resize=/resize=(%width%,%width%)
for a rectangle,

or a rectangular

set height=80
set resize=/resize=(%width%,%height%)


or keep the proprtional setting and resize by setting the long side

set resize=/resize_long=%width%

or the short side

set resize=/resize_short=%width%

and set the JPEG quality to 50 percent

set quality=50

Store the thumbnails in subdiretories of the original files named thumbnail

set thumbnail=thumbnail

and use the prefix "TN-"

set prefix=TN-

Create the thumbnails always

set createallways=1

or just for new files

set createallways=0

If you want to see some progress messages you may

set silent=0
for all messages or

use this line to see just the processed directories

set silent=1

or use this if you do not like to see any processing message

set silent=2

Have fun
Nils