PHP-строка для int не работает - PullRequest
0 голосов
/ 16 декабря 2011

Я пытаюсь вырезать изображение для маленьких кусочков из базы данных.Мой код здесь:

$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 что-то после этого кода в foreach?

1 Ответ

3 голосов
/ 16 декабря 2011

Вам редко нужно преобразовывать строки в числа в 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 и опубликовать ее здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...