Lately I've been migrating a wordpress website onto another server and tidying much of it upo for a client. The website used many photo galleries, and the images had been uploaded to the website directly from a digital camera in the highest resolution, in the process bloating the website file size. So I did some research and came across the following solution to resize the images.
The complication was that whilst there were a lot of really huge images, there were also just as many smaller thumbnail sized images. So it was practical to do a batch resize to a specific dimension. I needed a solution that was smart enough to see if the image was really huge and apply the resize action, or if it was a thumbnail and leave it as is. Further to this, another complication arose because of the way wordpress sorts uploads into multiple folders. I wasn't able to run the standard photoshop batch process on the root folder without destroying the folder hierachy,
I came across the following script in the Adobe forums, and I really must credit the poster Paul Riggott as the author oof the script. It worked a treat, solving almost all my issues. The script resizes any image that is bigger that 900px, ignoring those that are smaller than 900px, whilst maintaining the folder scructure.
- In Adobe Bridge, navigate to the root folder where the images are stored locally.
- Select "View > Show Items From Subfolders" then select all images.
- Run the following script in the Adobe ExtendScript Toolkit:
#target bridge
var thumbs = app.document.getSelection("jpg");
alert("Checking "+ thumbs.length + " files");
var jpgs = 0;
for(var a in thumbs){
var md = thumbs[a].synchronousMetadata;
var t= new Thumbnail(thumbs[a]);
if(Math.max(t.core.quickMetadata.width,t.core.quickMetadata.height)>=900){
jpgs++;
md.namespace = "http://ns.adobe.com/tiff/1.0/";
var orientation = md.Orientation.replace(/(\w+)(\s+)(.)(\d+)(.)/,"$3$4");
if(orientation == 'Normal') orientation =0;
var bm = new BitmapData(thumbs[a].spec);
bm = bm.rotate(orientation);
bm = bm.resize(500,BitmapData.bicubicSharper);
bm.exportTo(new File(thumbs[a].spec),80); //80 is the quality
}
}
alert(jpgs + " JPEGs have been modified");
The next step was to smush all the images. I did this by creating a "Save for web" action in Photoshop. Opening up the images in Bridge and applying the batch action from within Bridge. Unfortunately I wasn't able to apply this to the root folder, and needed to do each folder individually.