<?php |
error_reporting (7); |
define( 'ROOT' , getcwd ()); |
define( 'BASEDIR' , parse_url ( $_SERVER [ 'REQUEST_URI' ], PHP_URL_PATH)); |
if ( $_POST [ 'text' ]) { |
$ret = array (); |
$text = $_POST [ 'text' ]; |
try { |
$ret [ 'imgurl' ] = text2img( $text , ( array ) $_REQUEST [ 'config' ]); |
} |
catch (Exception $e ) { |
$ret [ 'imgurl' ] = print_r( $e , true); |
} |
echo str_replace ( '\\/' , '/' , json_encode( $ret )); |
exit (0); |
} |
function text2img( $text , $options = array ()) |
{ |
$text .= "\n-------------------------------\n" ; |
$text .= "http://iscup.com" ; |
$rows = substr_count( $text , "\n" ) + 1; |
$font_path = $options [ 'fontfile' ] ? $options [ 'fontfile' ] : ROOT . '/SIMSUN.TTC' ; |
if (! file_exists ( $font_path )) |
throw new Exception( " 找不到字体文件:$font_path " ); |
$font_size = $options [ 'fontsize' ] ? $options [ 'fontsize' ] : 12; |
$padding = $options [ 'padding' ] ? $options [ 'padding' ] : 30; |
$row_plus_height = $options [ 'row_plus_height' ] ? $options [ 'row_plus_height' ] : 4; |
$border = 1; |
$im_width = 430; |
$im_height = ( $row_plus_height + ( $font_size * 4) / 3) * $rows + ( $padding + $border ) * 2; |
$im = @imagecreatetruecolor( $im_width , $im_height ); |
if (! $im ) |
throw new Exception( "初始化图片失败,请检查 GD 配置" ); |
imagefilledrectangle( $im , $border , $border , ( $im_width - 2 * $border ), ( $im_height - 2 * $border ), imagecolorallocate( $im , 255, 255, 255)); |
imagettftext( $im , $font_size , 0, ( $border + $padding ), (( $font_size * 4) / 3 + $border + $padding ), imagecolorallocate( $im , 0, 0, 0), $font_path , $text ); |
$base_path = '/files' ; |
$base_filename = date ( "Y-m-d,H-i-s" ) . '.png' ; |
$short_filename = $base_path . '/' . $base_filename ; |
$short_url = rtrim(BASEDIR, '/' ) . $short_filename ; |
@ mkdir (ROOT . $base_path , 0777, true); |
$filename = ROOT . $short_filename ; |
if (!imagepng( $im , $filename )) { |
throw new Exception( "创建图片时出错。" ); |
} |
@imagedestroy( $im ); |
return $short_url ; |
} |
?> |
<!DOCTYPE HTML><html><head> |
<meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> |
<title>长微博工具</title> |
<script type= "text/javascript" src= "http://lib.sinaapp.com/js/jquery/1.6.2/jquery.min.js" ></script> |
</head> |
<body> |
<h1>长微博工具</h1> |
<p><textarea name= "text" id= "text" rows= "20" cols= "60" ></textarea></p> |
<pre id= "pre" ></pre> |
<p><a target= "_blank" href= "" id= "url" ></a></p> |
<p><input type= "button" id= "format" value= "格式化" /><input type= "button" id= "button" value= "生成长微博" /> <br/><br/><br/><br/> <a href= "http://changweibo.debake.com/" style= "font-size:9px; color:#666; text-decoration:none" >长微博</a></p> |
<script type= "text/javascript" > |
BIG_FONT_WIDTH = 44; |
function f(v,w,c){ |
c = 0; |
w = w || BIG_FONT_WIDTH; |
return v.replace(/[\S\s]/g, function (a){ |
if (/[\r\n]/.test(a)) { |
c = -2; |
return "\r\n" ; |
} |
c += /[\x00-\xFF]/.test(a) ? 1 : 2; |
if (c>=w){ |
c = 0; |
return "\r\n" +a; |
} |
return a; |
}); |
} |
$( function (){ |
$( "#format" ).click( function (){$( "#text" ).val(f($( "#text" ).val()));}); |
$( "#button" ).click( function (){ |
if ($( "#text" ).val().length<1){ |
alert( "无内容" ); |
} else { |
$.ajax({ |
type: "POST" , |
url:location.pathname, |
data: "text=" +$( "#text" ).val(), |
dataType: "json" , |
success: function (m){ |
if (m.message)$( "#pre" ).innerHTML(m.message); |
if (m.imgurl)$( "#url" ).attr( "href" , m.imgurl).text(m.imgurl); |
} |
}); |
} |
}); |
}); |
</script> |
</body> |
</html> |