本节内容:
调整图片宽度与高度
例子:
/**
* 改变图片的宽高
* @edit: www.
* @param string $img_src 原图片的存放地址或url
* @param string $new_img_path 新图片的存放地址
* @param int $new_width 新图片的宽度
* @param int $new_height 新图片的高度
* @return bool 成功true, 失败false
*/
function resize_image($img_src, $new_img_path, $new_width, $new_height)
{
$img_info = @getimagesize($img_src);
if (!$img_info || $new_width < 1 || $new_height < 1 || empty($new_img_path)) {
return false;
}
if (strpos($img_info['mime'], 'jpeg') !== false) {
$pic_obj = imagecreatefromjpeg($img_src);
} else if (strpos($img_info['mime'], 'gif') !== false) {
$pic_obj = imagecreatefromgif($img_src);
} else if (strpos($img_info['mime'], 'png') !== false) {
$pic_obj = imagecreatefrompng($img_src);
} else {
return false;
}
$pic_width = imagesx($pic_obj);
$pic_height = imagesy($pic_obj);
if (function_exists("imagecopyresampled")) {
$new_img = imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_img, $pic_obj, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height);
} else {
$new_img = imagecreate($new_width, $new_height);
imagecopyresized($new_img, $pic_obj, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height);
}
if (preg_match('~.([^.]+)$~', $new_img_path, $match)) {
$new_type = strtolower()($match[1]);
switch ($new_type) {
case 'jpg':
imagejpeg($new_img, $new_img_path);
break;
case 'gif':
imagegif($new_img, $new_img_path);
break;
case 'png':
imagepng($new_img, $new_img_path);
break;
default:
imagejpeg($new_img, $new_img_path);
}
} else {
imagejpeg($new_img, $new_img_path);
}
imagedestroy($pic_obj);
imagedestroy($new_img);
return true;
}
//调用示例
$ret = resize_image('/images/www..gif', 'test.png', '300', '400');
var_dump($ret);
本节内容:
操作十进制正整数中的bit位
例子:
<? php
/**
* 根据十进制整数得到置为1的二进制位
*/
function get_bit_set_pos( $ int )
{
$ str = strval ( decbin ( $ int ) ) ;
$ str = strrev ( $ str ) ;
$ arr = array ( ) ;
for ( $ i = 0; $ i < strlen ( $ str ) ; $ i + + ) {
if ( $ str { $ i } ) {
$ arr [ ] = $ i + 1;
}
}
return $ arr ;
}
/**
* 设置整数中指定的bit位
*/
function set_bit_pos( $ int , $ pos )
{
if ( $ int > = 0 & & $ pos > 0) {
$ set_pos_arr = get_bit_set_pos( $ int ) ;
if ( $ set_pos_arr & & array_search ( $ pos , $ set_pos_arr ) ! = = false ) {
return $ int ;
}
$ int + = pow ( 2, $ pos - 1) ;
return $ int ;
} else {
return $ int ; //false
}
}
/**
* 设置整数中指定的多个bit位(数组形式提供)
*/
function set_bit_pos_merge( $ int , $ pos_arr )
{
if ( $ int < 0 | | ! is_array ( $ pos_arr ) | | ! $ pos_arr ) {
return $ int ; //false
}
foreach ( $ pos_arr as $ pos ) {
if ( $ pos > 0) {
$ int = set_bit_pos( $ int , $ pos ) ;
}
}
return $ int ;
}
/**
* 清除整数中指定的bit位
*/
function clean_bit_pos( $ int , $ pos )
{
if ( $ int > 0 & & $ pos > 0) {
$ set_pos_arr = get_bit_set_pos( $ int ) ;
if ( ! $ set_pos_arr | | array_search ( $ pos , $ set_pos_arr ) = = = false ) {
return $ int ; //false
}
$ int - = pow ( 2, $ pos - 1) ;
return $ int ;
} else {
return $ int ; //false
}
}
/**
* 清除整数中指定的多个bit位(数组形式提供)
*/
function clean_bit_pos_merge( $ int , $ pos_arr )
{
if ( $ int < 0 | | ! is_array ( $ pos_arr ) | | ! $ pos_arr ) {
return $ int ; //false
}
foreach ( $ pos_arr as $ pos ) {
if ( $ pos > 0) {
if ( ( $ ret = clean_bit_pos( $ int , $ pos ) ) ! = = false ) {
$ int = $ ret ;
}
}
} // www.
return $ int ;
}
本节内容:
判断客户端浏览器是否断开连接
相关阅读:php主动断开与浏览器的连接
例子:
/**
* 判断客户端浏览器是否断开连接
* site: www.
*/
date_default_timezone_set('asia/shanghai');
$starttime = date('h:i:s');
set_time_limit(30);
echo 'ignore_user_abort:'.ignore_user_abort().'<br>';
ignore_user_abort(true);
echo 'ignore_user_abort:'.ignore_user_abort().'<br>';
$i=1;
while(1){
if(!connection_aborted()){
echo "hello!!!--$i<br>";
ob_flush();
flush();
sleep(1);
$i++;
}else{
$endtime = date('h:i:s');
$status = 'seconds:'."$i connection status:".connection_status()." connection_aborted:".connection_aborted();
file_put_contents('stop.txt',"$starttime -> $endtime : stop $status");
exit();
}
}
?>