Picture Auto-Resize on Chrome

Auto-Resize on Chrome Picture Preview Tab

目前為 2016-09-05 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Picture Auto-Resize on Chrome
// @name:zh-cn    图片在Chrome中自动缩放
// @namespace    https://greasyfork.org/users/2646
// @version      0.5
// @description  Auto-Resize on Chrome Picture Preview Tab
// @description:zh-cn  让大图在Chrome窗体内自动调整到适合的缩放大小,一览图片全貌(不会影响图片保存)
// @author       2016+, CLE
// @include      *
// @grant        none
// ==/UserScript==

if( ! document.contentType.match(/^image\//i) ) return;

var img = document.getElementsByTagName("img")[0];

var imginfo = document.createElement("div");
imginfo.setAttribute("style", "position:fixed; right:10px; top:5px; z-index:10086; color:#FFF; font-size: 26px; opacity:0.5; text-shadow: 0px 0px 5px #000; padding: 1px; text-align: right;");

var imgfsize = -1; var tfs = "unknow";
var xhr = new XMLHttpRequest();
xhr.open('HEAD', document.location.href, true);
//xhr.open('HEAD', document.location.href, false);
xhr.onreadystatechange = function(){
	if ( xhr.readyState == 4 ) {
		if ( xhr.status == 200 ) {
			imgfsize = Number( xhr.getResponseHeader('Content-Length') );
			
			if(imgfsize > 0){
				if(imgfsize < 1024)
					tfs = imgfsize + " bytes";
				else if( imgfsize <=1024000 )
					tfs = (imgfsize/1024).toFixed(2) + " KB";
				else if( imgfsize >1024000 )
					tfs = (imgfsize/1024/1024).toFixed(2) + " MB";
				refinfo();
			}
			
		} else {
			imgfsize = -1;
		}
	}
};
xhr.send(null);



function refinfo(){
	var infohtml;
	if(navigator.language=="zh-CN"){
		infohtml = '图片宽:'+ img.width + ' / ' + img.naturalWidth + '<br/>图片高:' + img.height + ' / ' + img.naturalHeight;
		if(imgfsize > 0) infohtml += '<br/>文件大小:' + tfs;
	}else{
		infohtml = 'Width: '+ img.width + ' / ' + img.naturalWidth + '<br/>Height: ' + img.height + ' / ' + img.naturalHeight;
		if(imgfsize > 0) infohtml += '<br/>File Size: ' + tfs;
	}
	
	imginfo.innerHTML = infohtml;
}
refinfo();
document.body.appendChild(imginfo);



function defsize(){
    img.height = img.naturalHeight;
    img.width = img.naturalWidth;
	refinfo();
}

function autoresize() {
    if ( img.naturalHeight > window.innerHeight || img.naturalWidth > window.innerWidth ) {
		var hb = 0; var zb = 0; var rat = 0;
		
		if(img.naturalWidth > window.innerWidth) hb = img.naturalWidth / window.innerWidth;
		if(img.naturalHeight > window.innerHeight) zb = img.naturalHeight / window.innerHeight;
		
		if(hb !== 0 && zb !== 0){
			if(hb >= zb) rat = hb; else rat = zb;
		} else if (hb !==0) {
			rat = hb;
		} else if (zb !==0) {
			rat = zb;
		}
		
		if (rat !==0 ){
			img.width = img.naturalWidth / rat;
			img.height = img.naturalHeight / rat;
		}
    }
	refinfo();
}

autoresize();
window.onresize = autoresize;


var defm = false;
window.onkeydown = function(event){
    switch(event.keyCode) {
        case 13: //enter
            if(defm){
                window.onresize = autoresize;
                autoresize();
            }else{
                window.onresize = null;
                defsize();
            }
            defm = !defm;
            break;
        case 27: //escape
            window.close();
            break;
		case 8: //backspace
			if(imginfo.style.display=="none")
				imginfo.style.display = "block";
			else
				imginfo.style.display = "none";
			break;
    }
};