[Đăng ký] Già Thiên (Tiên Hiệp - Huyền Huyễn)

fox9

Đại Thừa Sơ Kỳ
Administrator
Hình như có mỗi anh không biết là e học chuyên Tin thì phải.
Mà lớp chuyên Tin học từ lớp 10 mà huynh. Anh ra nước ngoài từ khi nào vậy :-/
Còn cái kia anh cứ send e sẽ test và làm hướng dẫn cho như đã hứa

Anh đã rời vn cũng 5-6 năm rồi.
Anh gần đây ít tham gia tám ở những pic khác nên hem bít :xinloi:

Thế muội thường dùng ngôn ngữ để viết code?
 

fox9

Đại Thừa Sơ Kỳ
Administrator
Hình như có mỗi anh không biết là e học chuyên Tin thì phải.
Mà lớp chuyên Tin học từ lớp 10 mà huynh. Anh ra nước ngoài từ khi nào vậy :-/
Còn cái kia anh cứ send e sẽ test và làm hướng dẫn cho như đã hứa

Here! Muội cứ thay thế nội dung của file script cũ bằng nội dung mới này: Open file script cũ, Ctrl-A, Copy & paste vào nội dung sau.
Code:
// ==UserScript==
// @id             hctb_bns_imgex
// @name           BNS ImageExport
// @version        0.2
// @namespace      bns_imgex@hctb
// @author         fox9
// @description    Convert text to image - BNS editpost
// @include        http://bachngocsach.com/editpost.php?*
// @include        http://bachngocsach.com/newreply.php?*
// @run-at         document-end
// ==/UserScript==


var preview=document.getElementById("post_preview");if(!preview)return;
var input=preview.getElementsByTagName("input")[0];if(!input)return;

var input2=input.cloneNode(false);input2.value="make image";
input2.style.cssText+="float:right;";input2.removeAttribute("onclick");
var input3=input2.cloneNode(false);input3.value="+";
input2.addEventListener("click",start,false);input3.addEventListener("click",option,false);

var pnl=document.createElement("div");pnl.id="pnl";
pnl.style.cssText="display:none;width:200px;background-color:#DEB887;border:1px solid #696969;padding:2px;text-align:center";
pnl.innerHTML='<label>Size & Background</label><textarea rows="2" title="Chiều rộng\nMàu nền (-- Transparent)"></textarea><label>Watermark-1</label><textarea rows="7" title="Chữ (-- Skip)\nTên font\nKiểu chữ\nCỡ chữ\nTên/mã màu\nGóc xoay\nSố dòng"></textarea><label>Watermark-2</label><textarea rows="6" title="Chữ (-- Skip)\nTên font\nKiểu chữ\nCỡ chữ\nTên/mã màu\nGóc xoay"></textarea><input id="b1" type="button" value="Save"><input id="b2" type="button" value="Reset">';

var txt=pnl.getElementsByTagName("textarea");
preview=input.parentNode;preview.appendChild(pnl);preview.appendChild(input3);preview.appendChild(input2);
input.setAttribute("onclick","var b=this.parentNode.nextElementSibling.children[0];b.style.display=(b.style.display=='')?'none':'';")

var style=document.createElement("style");style.textContent="#pnl{float:right;margin-top:10px}#pnl>textarea{display:block;width:100%;resize:none}";
document.getElementsByTagName("head")[0].appendChild(style);sSet(gSet());

document.getElementById("b1").addEventListener("click",save,false);
document.getElementById("b2").addEventListener("click",reset,false);

function save(){GM_setValue("setting",gPar())}
function reset(){sSet(gSet(true));save()}
function option(){pnl.style.display=(pnl.style.display=="")?"none":"";}
function sSet(s){var s1=s.split(";");for(var i=0;i<3;i++){txt[i].value=unescape(s1[i])}}
function gSet(reset){var s=GM_getValue("setting");if(!s||reset)s=window.atob("NzIwcHglMEElMjNGRkZGRjQ7YmFjaG5nb2NzYWNoLmNvbSUwQUFyaWFsJTBBYm9sZCUyMGl0YWxpYyUwQTgwcHglMEElMjNmZWMlMEEtNDAlMEE0O0dJJUMwJTIwVEhJJUNBTiUyMC0lMjBTYW8lMkNWZSUyQ1doeS4uLiUwQVRpbWVzJTBBbm9ybWFsJTIwYm9sZCUwQTcycHglMEFwYWxlZ3JlZW4lMEEzNTs=");return s}
function gPar(){var s="";for(var i=0;i<3;i++){s+=escape(txt[i].value.trim())+";"}return s}

function start(e){
var content=e.target.parentNode.nextElementSibling,mi=<><![CDATA[
var pnl=document.getElementById("pnl"),txt=pnl.getElementsByTagName("textarea"),
	b1=document.getElementById("b1"),b2=document.getElementById("b2"),
	div=document.getElementById("container"),div1=div.children[0],
	can=document.createElement("canvas"),ctx=can.getContext('2d'),
	imgW,imgH,img=new Image(),bg,wm1,wm2,imgr=false,imgs;

	b1.value="Apply";b2.value="Default";
	b1.addEventListener("click",apply,false);b2.addEventListener("click",function(){sSet2(true)},false);
	pnl.style.display="";div1.style.display="";div1.style.backgroundColor="";div1.style.border="";
	div.parentNode.insertBefore(can,div);img.onload=function(){imgr=true}
	sSet2();apply();

function apply(){
	bg=txt[0].value.split("\n"),wm1=txt[1].value.split("\n"),wm2=txt[2].value.split("\n");
	div.style.width=bg[0];div.style.display="";
	imgW=div.clientWidth;imgH=div.clientHeight;
	document.title=imgW+" x "+imgH+" - makeImage";

	//8192 is limit for both width & height
	if(imgW>8192){div.style.display="none";alert("Bề rộng của image quá lớn!\n\nChọn giá trị nhỏ hơn...haiz!");return}

	img.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='"+imgW+"' height='"+imgH+"'><foreignObject width='100%' height='100%'>"+(new XMLSerializer).serializeToString(div).replace(/color="#/g,'color="')+"</foreignObject></svg>";
	div.style.display="none";

	if(imgH>8192){
		div1=document.createElement("div");div1.style.cssText="background-color:red;clear:both";pnl.appendChild(div1);
		var ib=[],begin=0,nm=parseInt(imgH/8192)+1;//n of images
		for(var i=0;i<nm;i++){
			ib[i]=document.createElement("input");ib[i].type="button";
			ib[i].value="i"+(i+1);
			var len=Math.round((i+1)*imgH/nm);
			ib[i].title=begin+"-"+len;begin=len;
			ib[i].addEventListener("click",imgsDraw,false);div1.appendChild(ib[i])}

		for(var i=0;i<3;i++){txt[i].setAttribute("disabled",true)}
		b1.value="Return";b2.setAttribute("disabled",true);
		b1.removeEventListener("click",apply,false);b1.addEventListener("click",ret,false);
		imgs=true;
	}else{drawImg(0,imgH)}
}

function imgsDraw(e){var az=e.target.title.split("-");drawImg(az[0],az[1])}
function drawImg(a,z){
	can.width=imgW;can.height=z-a;
	if(bg[1].substr(0,2)!="--"){ctx.fillStyle=bg[1];ctx.fillRect(0,0,can.width,can.height)}
	var x=can.width/2,y=imgH/2;ctx.textAlign="center";

	if(wm2[0].substr(0,2)!="--"){
		wm(wm2[0],wm2[2]+" "+wm2[3]+" "+wm2[1],wm2[4],x,y-a,wm2[5]);
		var wm2b=true}

	if(wm1[0].substr(0,2)!="--"){
		var n=parseInt(wm1[6]);if(wm2b&&n%2==0)n++;
		y=imgH/(n+1);//n:times to paint
		for(i=1;i<=n;i++){
			if(wm2b&&i==parseInt(n/2)+1)continue;
			wm(wm1[0],wm1[2]+" "+wm1[3]+" "+wm1[1],wm1[4],x,(y*i)-a,wm1[5])}
	}
	dImg();

	function wm(s,f,c,x,y,r){
		ctx.save();ctx.font=f;ctx.fillStyle=c;
		ctx.translate(x,y);ctx.rotate(r*Math.PI/180);
		ctx.fillText(s,0,0);ctx.restore()}
	function dImg(){
		if(imgr){ctx.drawImage(img,0,a,imgW,z-a,0,0,imgW,z-a);if(!imgs)imgr=false;
		}else{setTimeout(dImg,300)}}
}
function ret(){
	pnl.removeChild(div1);
	for(var i=0;i<3;i++){txt[i].removeAttribute("disabled")}
	b1.removeEventListener("click",ret,false);b1.addEventListener("click",apply,false);
	b2.removeAttribute("disabled",true);b1.value="Apply";
	imgr=false;imgs=false;}

function sSet2(def){
	var s=((def)?par[1]:par[0]).split(";");for(var i=0;i<3;i++){txt[i].value=unescape(s[i])}}

]]></>.toString();
var pnl2=document.createElement("div");pnl2.appendChild(pnl.cloneNode(true));
var nWin='data:text/html;charset=utf-8;base64,'+window.btoa(unescape(encodeURIComponent('<html><head><title>makeImage</title><style>body{background-color:#f4f4f4;overflow-y:scroll}canvas:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGElEQVQYV2N4DwX/oYBhgARgDJjEAAkAAEC99wFuu0VFAAAAAElFTkSuQmCC")}#pnl{position:fixed;top:20px;right:5px}textarea{display:block;width:100%;resize:none;font:12px Tahoma,Calibri,Verdana,Geneva,sans-serif}#b1{float:left}#b2{float:right}</style></head><body><div id="container" style="font:13px Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif;text-align:justify">'+content.innerHTML+'</div>'+pnl2.innerHTML+'<script>var par=["'+gPar()+'","'+gSet(true)+'"];'+mi+'</script></body></html>')));
window.open(nWin,'make-image','width=800,height=600')}

Tự vọc thử xem...:cuoikha: Huynh nhất thời ko biết hướng dẫn xài thế nào! :cry:

Thanks muội. :hoa:
------


À quên, vì nội dung trên có unicode, trong phần mềm editor của muội phải support unicode, nếu ko các chữ tiếng Việt đều bay mất. Mà muội dùng software editor nào vậy???
 

ve sầu

Phàm Nhân
Ngọc
50,00
Tu vi
0,00
Có lẽ e chỉ dịch dc chương 1259 nữa thôi. :(
E dùng Unikey.
AK đúng rồi. Cái Scripts này có vấn đề mấy cái chương mới post trong box ẩn thô làm thử đều thiếu mất nội dung. Hình như là chiều dài nó quá lớn hay sao ấy.

Như cái này chẳng hạn:

28a31e0c9d5fc33cf8276187aaee1c8d_47430418.canvas.png
 

fox9

Đại Thừa Sơ Kỳ
Administrator
Có lẽ e chỉ dịch dc chương 1259 nữa thôi. :(
E dùng Unikey.
AK đúng rồi. Cái Scripts này có vấn đề mấy cái chương mới post trong box ẩn thô làm thử đều thiếu mất nội dung. Hình như là chiều dài nó quá lớn hay sao ấy.

Như cái này chẳng hạn:

28a31e0c9d5fc33cf8276187aaee1c8d_47430418.canvas.png

Khi muội chọn font chữ lớn, kết quả là file image tạo ra cũng sẽ lớn. Script sẽ tự cắt image tạo ra thành những image nhỏ. Khi panel có thanh màu đỏ ở dưới cùng với các nút i1, i2.... thì đó là số image đc tạo ra. Muội phải click lần lượt vào từng nút để script tạo image và sau đó lưu lại từng image.

Chức năng này cải thiện việc script cũ ko cho phép tạo file quá lớn (gián tiếp chỉ chấp nhận fontSize nhỏ)

Ngoài ra, script này cho phép muội: thay đổi các dòng watermark, thay đổi màu nền. Đưa trỏ chuột vào các chỗ nhập text, tooltip sẽ hiện ra. Đó là thứ tự nhập. Để bỏ qua màu nền, hay watermark muội dùng "--" (2 dấu trừ).

Script này cũng cho phép lưu lại các thông số đã chỉnh sửa. Bên trang của BNS click và nút "+" sẽ có option save.

:hoa:
 

fox9

Đại Thừa Sơ Kỳ
Administrator
À nói về việc bỏ qua các thông số. Chỉ có 3 dòng chấp nhận việc bỏ qua này: đó là dòng màu nền, dòng bachngocsach, dòng già thiên.

Chỉ cần thêm "--" vào ngay phía trước mỗi dòng là xong.

Đối với màu nền. Bỏ qua nghĩa là tạo màu nền trong suốt (transparent)
Các dòng chữ, nghĩa là ko dùng watermark.
 

nhatchimai0000

Phàm Nhân
Administrator
bach-ngoc-dich-gia
Ngọc
5.022,77
Tu vi
0,00
C 1664 đâu. Send ta đi. Ta tiếp lửa cho cáo. Muội Shin đã nhận ra đời thực quan trọng hơn là hay lắm. Như thế gọi là đóng góp trong bền vững. Thú chơi gì cũng được nhưng phải bền vững mới được. Chúc mọi người ngày chủ nhật vui vẻ. Shin làm ta nhớ lại hồi lớp 12 quá. Năm đó đúng là cao điểm học tập.
 

fox9

Đại Thừa Sơ Kỳ
Administrator
@sao: Muội xài thấy có dễ ko? Đã nắm hết cách nhập dữ liệu chưa? Có muốn huynh thêm chức năng nào khác?

Huynh để ý đầu và cuối của image có khoảng trống. Đó là do trong bản text của muội có Enter dư thừa đó! :cuoikha:
 

Những đạo hữu đang tham gia đàm luận

Top