User:Alex 21/script-imageres.js

$(document.getElementsByClassName("fileInfo")).ready(function {	// Filenamespace only	if (mw.config.get("wgNamespaceNumber") !== 6) return;	// Get file information: height and width	var fileInfo = document.getElementsByClassName("fileInfo")[0];	if(!fileInfo) return;	var height_width = fileInfo.innerHTML.match(/([\d,]+) × ([\d,]+)/);

// With the height and width, calculate the total pixel count var width = parseInt(height_width[1].replace(/,/g,'')); var height = parseInt(height_width[2].replace(/,/g,'')); var total_pixels = height*width;

// Maximum pixel count per IMAGERES var max_pixels = 100000;

// Calculate the new width, height, dimensions and total pixel count with the // formula from IMAGERES, and confirm the new total pixel count is within range var new_width = Math.floor(Math.sqrt(max_pixels*width/height)); var new_height = Math.round(height*new_width/width); var new_total_pixels = new_width*new_height; while (new_total_pixels > max_pixels) { new_width--; new_height = Math.round(height*new_width/width); new_total_pixels = new_width*new_height; }	var new_dimensions = new_width+" × "+new_height;

// Colour coding the results; green = good, red = bad var colour_start = ""; var colour_end = ""; if (total_pixels > max_pixels) { colour_start = " "; colour_end = " "; } else { colour_start = " "; colour_end = " "; }

// Add the total pixel count after the initial dimensions fileInfo.innerHTML = fileInfo.innerHTML.replace("pixels,",		"pixels, "+colour_start+number_format(total_pixels)+colour_end+" total pixels, "); // If the image exceeds 0.1MP, then report the error if (total_pixels > max_pixels) { // Create a image link with the maximum reduced size var image_link = document.getElementsByClassName('internal')[0].href; var new_image_link = image_link.replace("/en/", "/en/thumb/")+"/"+new_width+"px-"+image_link.substr(image_link.lastIndexOf("/")+1); var reuploadReason = "Resize to less than 0.1 MP per WP:IMAGERES via script."; var replaceLink = document.getElementById('mw-imagepage-reupload-link'); if ( !replaceLink || !replaceLink.children) return; var reuploadLink = replaceLink.children[0]; var reuploadLinkNew = reuploadLink.href+"&wpUploadDescription="+reuploadReason; // Add the maximum size of the image that's less than 0.1MP, the total pixel count, the new image link, and the reupload link summary fileInfo.innerHTML = fileInfo.innerHTML+" (maximum size: "+colour_start+new_dimensions+colour_end+			" pixels, "+number_format(new_total_pixels)+" total pixels, resized file, upload resized file)"; }

// Add commas to values over 1,000 function number_format(x) { return x.toString.replace(/\B(?=(\d{3})+(?!\d))/g, ","); } });