dionis kudinov 0 Опубликовано 11 июня, 2008 Жалоба Share Опубликовано 11 июня, 2008 Обнаружил, что картинки ресайзятся не по масштабу указанному в настройках. Т.е. стоит масштаб ширина=100 высота=75, а реально получаются больше. Ресайз происходит, но не выдерживается заданный масштаб. Причем есть варианты, когда все происходит как надо, но в большинстве - по высоте картинки превышают заданный лимит. Что это может быть? И где можно посмотреть скрипт ресайза? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 11 июня, 2008 Жалоба Share Опубликовано 11 июня, 2008 Наверное это как-то с пропорциями картинок связано, т.е. картинка пропорционально режется, а не тупо 100 на 75, что б картинки выглядели прилично, если пропорцию не будет соблюдаться и если например ориришинальная картинка 300 пикселей на 700 пикселей, т.е. сильно вытянута по высоту, в таком случае, тупая нарезка до 100 на 75 будет выглядеть ужасно. Ссылка на сообщение Поделиться на другие сайты
dionis kudinov 0 Опубликовано 11 июня, 2008 Автор Жалоба Share Опубликовано 11 июня, 2008 Я знаю, что такое ресайз. Понятно: пропорции сохраняются. Но приличный скрипт ресайза определяет размеры картинки и если картинка "вытянута" по высоте, он ее конвертирует и за основу берет лимит по высоте, в случае если "растянута" по ширине, - лимит по ширине. Можно конечно макросом в фотошопе перегнать картинки в нужный размер, но обычный юзер не будет так заморачиваться. Да и просто не понятно - стандартная функция, где глюк - интересно. Так, обнаружил закономерность: "растянутые" по ширине картинки ресайзятся нормально, а вот - по высоте не хотят. Напрашивается вывод: скрипт ресайза - неполноценен... Щас полезу, посмотрю. О результатах сообщу. Нашел недостаток: в файле function/trumbnails_add_funcs.php в функцию vam_get_image_size необходимо добавить условие: if (vam_not_null($width) && vam_not_null($height)) { $srcratio = $image_size[0] / $image_size[1]; if ($ratio < $src_ratio) { $height = $width / $src_ratio; } else { $width = $height * $src_ratio; } } функция полностью: function vam_get_image_size($src, $width, $height) { if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') ) { if ($image_size = @getimagesize($src)) { if (vam_not_null($width) && vam_not_null($height)) { $srcratio = $image_size[0] / $image_size[1]; if ($ratio < $src_ratio) { $height = $width / $src_ratio; } else { $width = $height * $src_ratio; } } elseif (!vam_not_null($width) && vam_not_null($height)) { $ratio = $height / $image_size[1]; $width = $image_size[0] * $ratio; } elseif (vam_not_null($width) && !vam_not_null($height)) { $ratio = $width / $image_size[0]; $height = $image_size[1] * $ratio; } elseif (!vam_not_null($width) && !vam_not_null($height) or $width > $image_size[0] or $height > $image_size[1]) { $width = $image_size[0]; $height = $image_size[1]; } } } Вот теперь ресайз при закачке работает как надо. Похоже, Vam, ты упустил это условие по запарке, хотя по логике оно должно быть первым. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 12 июня, 2008 Жалоба Share Опубликовано 12 июня, 2008 dionis kudinov Спасибо большое за решение проблемы. Добавил данное исправление в исходный код, со следующим патчем будет и это Ваше исправление. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 12 июня, 2008 Жалоба Share Опубликовано 12 июня, 2008 Нашел недостаток: в файле function/trumbnails_add_funcs.php в функцию vam_get_image_size необходимо добавить условие: if (vam_not_null($width) && vam_not_null($height)) { $srcratio = $image_size[0] / $image_size[1]; if ($ratio < $src_ratio) { $height = $width / $src_ratio; } else { $width = $height * $src_ratio; } } А чему в момент if ($ratio < $src_ratio) { равен $ratio? null? Ссылка на сообщение Поделиться на другие сайты
dionis kudinov 0 Опубликовано 12 июня, 2008 Автор Жалоба Share Опубликовано 12 июня, 2008 Ну вот, хором и решили задачку. ABerezin, конечно же надо добавить строчку $ratio = $width / $height; В который раз убеждаюсь: любой скрипт требует тестирования, а обычно этим лень заниматься. Кстати, по невнимательности допустил ошибку: вместо $src_ratio написал $srcratio - исправте у себя плиз. Погонял скрипт с разными картинками: длинными, высокими и тд - вроде на этот раз без глюков. Но как знать, никогда не говори никогда. Последний <<релиз>> function vam_get_image_size($src, $width, $height) { if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') ) { if ($image_size = @getimagesize($src)) { if (vam_not_null($width) && vam_not_null($height)) { $ratio = $width / $height; $src_ratio = $image_size[0] / $image_size[1]; if ($ratio < $src_ratio) { $height = $width / $src_ratio; } else { $width = $height * $src_ratio; } } elseif (!vam_not_null($width) && vam_not_null($height)) { $ratio = $height / $image_size[1]; $width = $image_size[0] * $ratio; } elseif (vam_not_null($width) && !vam_not_null($height)) { $ratio = $width / $image_size[0]; $height = $image_size[1] * $ratio; } elseif (!vam_not_null($width) && !vam_not_null($height) or $width > $image_size[0] or $height > $image_size[1]) { $width = $image_size[0]; $height = $image_size[1]; } } } Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 июня, 2008 Жалоба Share Опубликовано 13 июня, 2008 Спасибо, поправил. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения