
Юзер
185 Отв.
|
кривовато будет где-то 1-2 процента. Это незаметно для глаза. Это как разбросать стопку из 100 спичек и 98. И попробуйте на глаз определить, какая куча больше
10.11.2010 15:48:01
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
185 Отв.
|
если использоваь floor, то размыто точно не будет, потому что картинка будет всегда меньше исходной, и при этом качество не теряется
10.11.2010 15:40:01
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|
Юзер
33 Отв.
|
slavko11 , уже сделал так как написано в вашем последнем сообщении, меняю размер картинки что бы она делилась на цело, возможно что-то где-то будет размыто и кривовато (из-за не соотношения пропорций при изменении размера). посмотрим что будет, потом если что переделаю. Спасибо.
10.11.2010 15:25:01
Цитировать выделенное
|

Юзер
185 Отв.
|
можно еще проще оставить $cellheight и $cellwidth те, которые ввел пользователь вычислить только количество строк и столбцов, желательно с функцией round. Умножаем количество строк/столбцов на высоту/ширину элементпа, получаем новый размер рисунка и функцией imagecopyresized преобразуем исходную картинку в картинку с размерами, которые будут делиться нацело на размеры элемента
10.11.2010 15:21:02
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
185 Отв.
|
еще проще будет так: берем число 4 как исходное. выполняем следующие опрации: 20/4=5 20/5=4 Так вот, последняя четверка в точности оказывается не равна первой. Так зачем нам вторая, если без проблем можно взять первую?
10.11.2010 14:13:04
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
185 Отв.
|
объясню попроще высота картинки - 1694 высота элемента - 65 что делает скрипт: вычисляет количество строк: 1694/65=26.06153846153846..... затем вычисляет новый размер элемента, округлив предыдущий результат до меньшнго целого, то есть до 26: 1694/26=65.15384615..... затем обратно вычисляется количество строк:1694/65.15384615..... должны получить ровно 26. На калькуляторе вы и получите 26. В данном случае компьютер посчитал результат как 25.99999999999999999999999, и если вывести это число на экран, оно выведется как 26. Но если его округлить до меньшнго целого, что и делает скрипт, получаем 25. Вместо 26. Одна строка пропала.
Замечу, что в большинстве случаев все же считается правильно, и если размер элемента кратен 10, то очевидно, что и точность вычислений возрастает на один знак, чего может быть достаточно для того, чтобы данный казус не проявился. Однако заставлять пользователей указывать размеры, кратные 10, тоже ведь не выход?
10.11.2010 14:06:02
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
185 Отв.
|
Уважаемая Vredina , в данном моем случае высота указана 64, а не 65. Проэкспериментировав, оказалось, что обрезать нижний ряд будет при значениях высоты элемента 63,64,65,66,67. При меньших или больших не будет. Но дело не в этом. Причину автору кода я указал. Она возникает в некоторых случаях при вычислениях с плавающей точкой : http://www.mysql.ru/docs/man/Problems_with_float.html
В данном случае проблема вызвана искусственно. Применив вместо конструкции $rows1 = $height/$cellheight; $cols1 = $width/$cellwidth;
$cellheight=$height/floor($rows1); $cellwidth=$width/floor($cols1);
$rows = floor($height/$cellheight); $cols = floor($width/$cellwidth);
следующую:
$rows = floor($height/$cellheight); $cols = floor($width/$cellwidth);
$cellheight=$height/$rows; $cellwidth=$width/$cols);
мы решаем проблему полностью. А еще лучше вместо floor использовать round.
Получив новые значения размера элементов и количества строк/столбцов, получаем размер новой картинки, которую и получаем ресайзингом с помощью функции imagecopyresized, а дальше дело техники. И никакой проблемы с несовпадением не возникает.
10.11.2010 13:29:05
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Модер
545 Отв.
|
Укажите мне хоть один паззл на первой странице великой кучи, где есть хоть одно целочисленное деление
slavko11 , дело в том что никогда пазл не делится на тот размер который указывается.. допустим я указываю 60 на 60, а уж програма делит и 63 на 61 и тд... но ряды не умыкаются.. а вот при указании 65 на 65 частенько, не всехда ряды-то и пропадают... может зависит ещо и от размера самой картинки?
10.11.2010 12:33:04
Цитировать выделенное
_______________________________
Против глупости сами Боги бороться бессильны
|

Юзер
185 Отв.
|
Не могли бы Вы в предосмотре рядом с количеством элементов вывести размер элемента?
10.11.2010 12:22:04
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|

Юзер
185 Отв.
|
Единственная проблема - экспериментировать придется здесь, поэтому заранее прошу прощения за те картинки, с которыми буду работать.
10.11.2010 11:35:05
Цитировать выделенное
_______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
|
|