将javascript文件压缩成图像存储

13 篇文章 0 订阅

压缩图:
png.php

<?
$filename = "alert('jhghg6565');";
if ($filename){	//$filename可以是JS文件,也可以是字符串
	//这个strlen是字符串的写法,filesize是JS文件的写法
	if(file_exists($filename)){
		$iFileSize = filesize($filename);
		$fs = fopen($filename, "r");
		$filename = fread($fs, $iFileSize);
		fclose($fs);
	}else{
		$iFileSize = strlen($filename);
	}

	$iWidth = ceil(sqrt($iFileSize / 1));
	$iHeight = $iWidth;
	$im = imagecreatetruecolor($iWidth, $iHeight);
	$i = 0;

	for ($y=0;$y<$iHeight;$y++) {
		for ($x=0;$x<$iWidth;$x++) {
			$ord = ord($filename[$i]);
			imagesetpixel($im, 
				$x, $y,
				imagecolorallocate($im,
					$ord,
					$ord,
					$ord
				)
			);
			$i++;
		}
	}

	header("Content-Type: image/png");
	imagepng($im);
	imagedestroy($im);
}

?>

前段加载js:
index.html

<html>
    <head>
    </head>
    <body>
<script>
load_PNGData = function(url, Callback) {
			var Xjs = new Image();
			Xjs.style.position = "absolute";
			Xjs.style.left = "-10000px";
			document.body.appendChild(Xjs);
			Xjs.onload = function() {
				var iWidth = this.offsetWidth;
				var iHeight = this.offsetHeight;
				var oText = document.getElementById("output");
				var canvas = document.createElement("canvas");
				var ctx = canvas.getContext("2d");
				ctx.drawImage(this,0,0);
				var oData = ctx.getImageData(0,0,iWidth,iHeight).data;
				var a = [];
				var len = oData.length;
				var p = -1;
				for (var i=0;i<len;i+=4) {
					if (oData[i] > 0)
						a[++p] = String.fromCharCode(oData[i]);
				};
				var strData = a.join("");
				if (Callback) {
					Callback(strData);
				}
				document.body.removeChild(Xjs);
			}
			Xjs.src = url;
	}
	tu = function(data){
		var scr = new Blob([data],{type:"application/text"});
		var script = document.createElement('script');
		script.src = URL.createObjectURL(scr);
		document.body.append(script);
	}
	load_PNGData('png.php',function(data){tu(data);});
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值