Юзер
6 Отв.
|
у меня есть мнение, что я не до конца понимаю, как работают некоторые функции в php будет ли делиться картинка на куски если размер элемента дробный и как происходит округление внутри функции, функция imagecopy
09.11.2010 16:25:05
Цитировать выделенное
|
Юзер
6 Отв.
|
Я использовал такой странный алгоритм чтобы вычислить не только количество строк и столбов, но и вычислить размер элемента пазла максимально приближенного к заданному пользователем: $rows1 = $height/$cellheight; тут используется размер пользователя $cols1 = $width/$cellwidth; и тут тоже
$cellheight=$height/floor($rows1); а тут делаем приблежение $cellwidth=$width/floor($cols1); и тут и получаем новый размер элемента
а уже затем исходя из этого посчитать количество строк и столбов: $rows = floor($height/$cellheight); $cols = floor($width/$cellwidth);
так что ни чего выкинуть нельзя.
09.11.2010 16:21:00
Цитировать выделенное
|

Юзер
99 Отв.
|
Вернее, на
$rows = floor($height/$cellheight); $cols = floor($width/$cellwidth);
09.11.2010 15:26:01
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
99 Отв.
|
Разобрался Вот эту конструкцию $rows1 = $height/$cellheight; $cols1 = $width/$cellwidth;
$cellheight=$height/floor($rows1); $cellwidth=$width/floor($cols1);
$rows = floor($height/$cellheight); $cols = floor($width/$cellwidth);
нужно заменить на
$rows1 = floor($height/$cellheight); $cols1 = floor($width/$cellwidth);
09.11.2010 15:25:02
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
99 Отв.
|
Если хотите обсудить алгоритм, свяжитесь со мной 130872096, плиз, когда появитесь
09.11.2010 14:17:01
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
99 Отв.
|
На калькуляторе-то все правильно получается :(
09.11.2010 13:48:00
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
99 Отв.
|
Попробуйте здесь $rows = floor($height/$cellheight); $cols = floor($width/$cellwidth); вместо floor использовать round, хотя не уверен, что это правильно. Очевидно, что в нашем случае floor получила что-то типа 25.999999999999999999... И отработала в 25
09.11.2010 13:46:01
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
99 Отв.
|
Кстати, в предпросмотре строк тоже 25, в нижней строке объединены 2 строки. Все желающие могут взять эту картинку и попробовать на предпросмотре с указанными высотой и шириной элемента. Так что предпросмотр выявляет такие случаи, я этого не знал. Но все же баг нужно найти
09.11.2010 13:35:03
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
99 Отв.
|
К сожалению, нужен для детадьного анализа последующий алгоритм. Понимаю, что Вы не будете его выкладывать. Что я нарыл: во-первых, прикрепляю исходный файл. Исходная высота - 65, ширина - 64. Значение $rows1 - 26.061..., $cols1 - 39.0625... .Однако, $rows уже 25, а не 26, $cols - 39. Отсюда и обрезка нижнего ряда
09.11.2010 13:31:02
Цитировать выделенное

Параметры изображения: 2500 x 1694, 16777216 color, 574393 byte, 27.03.2024 21:37:21 (Исходный файл)
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
228 Отв.
|
Однако
09.11.2010 10:19:03
Цитировать выделенное
|