A

Automatyczna obróbka fotografii

    Czasem pojawia się potrzeba obrobienia ogromnej ilości zdjęć w celu wykonania określonej czynności – np. stworzenia miniatury o określonych rozmiarach.

    Robienie tego ręcznie jest strasznym marnotrawieniem czasu.
    Z pomocą przychodzi Adobe Scripting.

    Niemal wszystkie produkty Adobe posiadają możliwość pisania własnych skryptów opartych o AppleScript, JavaScript czy VBScript.

    Dzięki dokumentacji języka JavaScript dla programu Adobe Photoshop (Photoshop JavaScript Reference) możemy bardzo szybko stworzyć skrypt, który wykona za nas całą pracę..

    implementacja

    var thumbnailWidth = 120;
    
    var thumbnailHeight = 120;
    
    var originalRulerUnits = preferences.rulerUnits;
    
    preferences.rulerUnits = Units.PIXELS;
    
    var inputFolder = Folder.selectDialog( "Select a folder to process" );
    
    var imageList = inputFolder.getFiles( /\.(jpg|png)$/i );
    
    for ( var i = 0; i < imageList.length; i++ )
    
    {
    
    	file = imageList[ i ];
    
    	open( file );
    
    	document = app.activeDocument;
    
    	document.changeMode( ChangeMode.RGB );
    
    	var documentWidth = UnitValue( document.width, "px" );
    
    	var documentHeight = UnitValue( document.height, "px" );
    
    	var documentRatio = documentWidth / documentHeight;
    
    	var thumbnailRatio = thumbnailWidth / thumbnailHeight;
    
    	if ( documentRatio >= thumbnailRatio )
    
    	{
    
    		document.resizeImage(
    
    			null,
    
    			UnitValue( thumbnailHeight, "px" ),
    
    			null,
    
    			ResampleMethod.BICUBIC
    
    		);
    
    	}
    
    	else
    
    	{
    
    		document.resizeImage(
    
    			UnitValue( thumbnailWidth, "px" ),
    
    			null,
    
    			null,
    
    			ResampleMethod.BICUBIC
    
    		);
    
    	}
    
    	var thumbnailX = 0.5 * ( document.width - thumbnailWidth );
    
    	var thumbnailY = 0.5 * ( document.height - thumbnailHeight );
    
    	var bounds = new Array(
    
    		thumbnailX,
    
    		thumbnailY,
    
    		document.width - thumbnailX,
    
    		document.height - thumbnailY
    
    	);
    
    	document.crop( bounds, 0, thumbnailWidth, thumbnailHeight );
    
    	var exportOptions = new ExportOptionsSaveForWeb();
    
    	exportOptions.quality = 50;
    
    	exportOptions.format = SaveDocumentType.JPEG;
    
    	exportOptions.optimized = true;
    
    	// Get document name (and remove file extension).
    
    	var filename = document.name.substr(
    
    		0,
    
    		document.name.lastIndexOf( '.' )
    
    	) || document.name;
    
    	var newName = filename + '.jpg';
    
    	var documentPath = document.path;
    
    	// Save for web filename issues.
    
    	if ( filename.length > 27 )
    
    	{
    
    		file = new File( document.path + '/temp_file.jpg' );
    
    		document.exportDocument(
    
    			file,
    
    			ExportType.SAVEFORWEB,
    
    			exportOptions
    
    		);
    
    		file.rename( newName ); // Restore original filename.
    
    	}
    
    	else
    
    	{
    
    		document.exportDocument(
    
    			File( document.path + '/' + newName ),
    
    			ExportType.SAVEFORWEB,
    
    			exportOptions
    
    		);
    
    	}
    
    	document.close( SaveOptions.DONOTSAVECHANGES );
    
    }
    
    preferences.rulerUnits = originalRulerUnits;

    Uruchomienie skryptu w Photoshopie polega na wybraniu z menu komendy „Browse” ( „File” > „Scripts” ) i wskazanie skryptu z dysku.