java调用数据库函数说未定义_调用未定义的函数imagerotate()

在page中你清楚地说明了它

注意:此功能仅在使用捆绑的GD库版本编译PHP时才可用 .

此函数显然包含内存泄漏 . 因此,它被排除在Ubuntu附带的GD库之外(我也假设其他操作系统) . 所以,如果你正在运行Ubuntu并想知道为什么你得到“调用未定义的函数imagerotate()”,即使你看起来安装了正确的GD lib,这就是原因 . 请使用dragonflydevelopment dot com提供的替代品 . 它完美无缺(对于90度的角度) . 另一方面,其他一些GD图像函数(不幸的是,更有趣的图像函数)遇到了同样的问题,并且也被排除在Ubuntu发行版之外 .

有关可能的解决方案,请查看here

if (!function_exists('imagerotate')) {

/*

Imagerotate replacement. ignore_transparent is work for png images

Also, have some standard functions for 90, 180 and 270 degrees.

Rotation is clockwise

*/

function imagerotate_rotateX($x, $y, $theta) {

return $x * cos($theta) - $y * sin($theta);

}

function imagerotate_rotateY($x, $y, $theta) {

return $x * sin($theta) + $y * cos($theta);

}

function imagerotate($srcImg, $angle, $bgcolor = 0, $ignore_transparent = 0) {

$srcw = imagesx($srcImg);

$srch = imagesy($srcImg);

//Normalize angle

$angle %= 360;

//Set rotate to clockwise

$angle = -$angle;

if ($angle == 0) {

if ($ignore_transparent == 0) {

imagesavealpha($srcImg, true);

}

return $srcImg;

}

// Convert the angle to radians

$theta = deg2rad($angle);

//Standart case of rotate

if ((abs($angle) == 90) || (abs($angle) == 270)) {

$width = $srch;

$height = $srcw;

if (($angle == 90) || ($angle == -270)) {

$minX = 0;

$maxX = $width;

$minY = -$height+1;

$maxY = 1;

} else if (($angle == -90) || ($angle == 270)) {

$minX = -$width+1;

$maxX = 1;

$minY = 0;

$maxY = $height;

}

} else if (abs($angle) === 180) {

$width = $srcw;

$height = $srch;

$minX = -$width+1;

$maxX = 1;

$minY = -$height+1;

$maxY = 1;

} else {

// Calculate the width of the destination image.

$temp = array(

imagerotate_rotateX(0, 0, 0 - $theta),

imagerotate_rotateX($srcw, 0, 0 - $theta),

imagerotate_rotateX(0, $srch, 0 - $theta),

imagerotate_rotateX($srcw, $srch, 0 - $theta)

);

$minX = floor(min($temp));

$maxX = ceil(max($temp));

$width = $maxX - $minX;

// Calculate the height of the destination image.

$temp = array(

imagerotate_rotateY(0, 0, 0 - $theta),

imagerotate_rotateY($srcw, 0, 0 - $theta),

imagerotate_rotateY(0, $srch, 0 - $theta),

imagerotate_rotateY($srcw, $srch, 0 - $theta)

);

$minY = floor(min($temp));

$maxY = ceil(max($temp));

$height = $maxY - $minY;

}

$destimg = imagecreatetruecolor($width, $height);

if ($ignore_transparent == 0) {

imagefill($destimg, 0, 0, imagecolorallocatealpha($destimg, 255,255, 255, 127));

imagesavealpha($destimg, true);

}

// sets all pixels in the new image

for ($x = $minX; $x < $maxX; $x++) {

for ($y = $minY; $y < $maxY; $y++) {

// fetch corresponding pixel from the source image

$srcX = round(imagerotate_rotateX($x, $y, $theta));

$srcY = round(imagerotate_rotateY($x, $y, $theta));

if ($srcX >= 0 && $srcX < $srcw && $srcY >= 0 && $srcY < $srch) {

$color = imagecolorat($srcImg, $srcX, $srcY);

} else {

$color = $bgcolor;

}

imagesetpixel($destimg, $x-$minX, $y-$minY, $color);

}

}

return $destimg;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值