function OnInit(scriptInitData) { scriptInitData.name = "SmartThumbnailSize"; scriptInitData.desc = DOpus.strings.Get('description'); scriptInitData.version = "0.3"; scriptInitData.copyright = "Chaoses Ib"; scriptInitData.url = "https://github.com/Chaoses-Ib/IbDOpusScripts"; scriptInitData.default_enable = true; var config_desc = DOpus.Create().Map(); scriptInitData.config.DefaultThumbnailSize = 256; config_desc("DefaultThumbnailSize") = DOpus.strings.Get('defaultThumbnailSize'); scriptInitData.config.NumberOfImagesToDetect = 3; config_desc("NumberOfImagesToDetect") = DOpus.strings.Get('numberOfImagesToDetect'); scriptInitData.config_desc = config_desc; var cmd = scriptInitData.AddCommand(); cmd.name = "SmartThumbnailSize"; cmd.desc = DOpus.strings.Get('description'); cmd.method = "OnSmartThumbnailSize"; cmd.template = "SIZE/N"; } function getFilesImageMetadata(files) { var images = []; for (var e = new Enumerator(files); !e.atEnd(); e.moveNext()) { var file = e.item(); if (file.metadata == "image" || file.metadata == "video") { images.push(file.metadata.image); if (images.length >= Script.config.NumberOfImagesToDetect) break; } } return images; } function adjustThumbnailSize(tab, size) { if (tab.format.view == "thumbnails") { var images = []; if (tab.selected_files.count > 0) { var selected_images = getFilesImageMetadata(tab.selected_files); if (selected_images.length > 0) images = selected_images; else images = getFilesImageMetadata(tab.files); } else { images = getFilesImageMetadata(tab.files); } // Get the median ratio and the correspoding width and height var width = 1, height = 1; if (images.length > 0) { images.sort(function (a, b) { return a.picwidth / a.picheight - b.picwidth / b.picheight; }); median = images[Math.floor(images.length / 2)]; width = median.picwidth; height = median.picheight; } // Set the thumbnail size var cmd = DOpus.Create().Command(); cmd.SetSourceTab(tab); if (width > height) { height = Math.round(height * size / width); width = size; } else { width = Math.round(width * size / height); height = size; } cmd.RunCommand("Show THUMBNAILSIZE source," + width + "," + height); } } function OnSmartThumbnailSize(scriptCommandData) { adjustThumbnailSize( scriptCommandData.func.sourcetab, scriptCommandData.func.argsmap.exists("SIZE") ? scriptCommandData.func.argsmap("SIZE") : Script.config.DefaultThumbnailSize ); } function OnDisplayModeChange(displayModeChangeData) { if (displayModeChangeData.mode == "thumbnails") { adjustThumbnailSize(displayModeChangeData.tab, Script.config.DefaultThumbnailSize); } } function OnAfterFolderChange(afterFolderChangeData) { if (afterFolderChangeData.result) { adjustThumbnailSize(afterFolderChangeData.tab, Script.config.DefaultThumbnailSize); } } ==SCRIPT RESOURCES