Устарело: неявное преобразование из float xxx.x в int теряет точность [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Устарело: неявное преобразование из float xxx.x в int теряет точность [дубликат]

Сообщение Anonymous »

Во-первых, прошу прощения, если это глупый вопрос. Я не писал много (если вообще писал) PHP в течение нескольких лет, так что я уже не заржавел (в лучшем случае).
У меня есть этот скрипт, который берет изображение и добавляет к нему текст. . Раньше это работало, но, видимо, в последней версии PHP, которую использует мой веб-хостинг, он ломается, выдавая ошибку "

Код: Выделить всё

The image “http://localhost/old1.php” cannot be displayed because it contains errors.
"
Чтобы понять, почему, я изменил заголовок Content-Type на text/plain. Это выдает ошибку "

Код: Выделить всё

Deprecated:  Implicit conversion from float xxx.x to int loses precision
" в нескольких строках (36-41) ближе к концу скрипта (некоторые, но не все, строки начинаются с imagettftext). Это та часть, которую я не понимаю. Я должен добавить что я совершенно неумный человек, чей мозг был крайне затуманен после Covid, поэтому мне трудно отследить, какие фактические числа выплескиваются в виде чисел с плавающей запятой, а где они ломаются из-за того, что не являются целыми числами, потому что, честно говоря, я просто не помню, как работает мой собственный скрипт. Честно говоря, я просто не знаю, с чего начать, пытаясь это исправить, поскольку ни одна из функций, которые я рассмотрел, не оказалась несовместимой с PHP 8.3.x. Однако мой веб-хост откатил PHP до версии 8.0, и скрипт работает. Я рассмотрел этот вопрос и до сих пор не могу понять, где настоящая проблема. Моя цель — переформулировать все, что мне нужно, чтобы я мог использовать последнюю версию PHP в будущем. Искренне благодарим вас за любые предложения.
РЕДАКТИРОВАТЬ: решено благодаря @phil; вот фиксированный бит:
'''
$px = $bbox[0] + (round(imagesx($im) / 2)) - (round($bbox [4]/2)) - strlen($text);
$px2 = $bbox2[0] + (round(imagesx($im)/2)) - (round($bbox2[4]/2) )) - strlen($text2);
$px3 = $bbox3[0] + (round(imagesx($im) / 2)) - (round($bbox3[4] / 2)) - strlen( $name);
//$px = (imagesx($im) - 7,5 * strlen($text)) / 2;
'''

Подробнее здесь: https://stackoverflow.com/questions/785 ... -precision
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»