我正在尝试从数据库中剪切小块的图像。我的代码在这里:
$image = imagecreatefromjpeg($filename);
$width = $row['width'];
$height = $row['height'];
$new_width = 480;
$new_height = 360;
$offset_x = (int)(round($height*360/$width));//100
$offset_y = 0;
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopy($new_image, $image, 0, 0, $offset_x, $offset_y, $width, $height);
imagejpeg($new_image,$newimg);
但在$offset_x
行中,(int)(round($height*360/$width))
无效。如果我添加intval
,例如100
,则所有images
都会很好,但偏移位置不愿意。那么如何true string to int
?
顺便说一句:在这种情况下,我会在foreach
中调用并剪切数据库中的图像,如果我在此代码之后unset
有什么内容吗?
答案 0 :(得分:3)
你很少需要在PHP中将字符串转换为数字,它确实非常好。例如,您的代码可以正常工作而无需任何额外的转换:
<?php
$height = '100';
$width = '200';
$offset = round($height * 360 / $width);
echo $offset;
?>
http://codepad.viper-7.com/LJEXIF
您可能遇到的问题,如果它没有给您正确的结果,则是操作的优先级。你的代码,
round($height * 360 / $width)
相当于
round($height * (360 / $width))
首先将360
除以$width
,然后将结果乘以$height
。如果这就是你想要的,那么你的问题就在于其他地方。您应该尝试使用http://codepad.viper-7.com上的测试变量重现您的问题并将其发布回此处。