SunChase |
|
---|---|
Предлагаю исправить нынешний механизм созданию Миниатюр на следующий :
В коде это будет выглядеть так : function sed_createthumb($img_big, $img_small, $small_x, $small_y, $keepratio, $extension, $filen, $fsize, $textcolor, $textsize, $bgcolor, $bordersize, $jpegquality, $dim_priority) { if (!function_exists('gd_info')) { return; } global $cfg; $gd_supported = array('jpg', 'jpeg', 'png', 'gif'); switch($extension) { case 'gif': $source = imagecreatefromgif($img_big); break; case 'png': $source = imagecreatefrompng($img_big); break; default: $source = imagecreatefromjpeg($img_big); break; } $big_x = imagesx($source); $big_y = imagesy($source); if (!$keepratio) { $thumb_x = $small_x; $thumb_y = $small_y; } elseif ($dim_priority=="Width" && $big_y<$big_x ) { $thumb_x = $small_x; $thumb_y = floor($big_y * ($small_x / $big_x)); } elseif ($dim_priority=="Width" && $big_y>$big_x && $big_x<$small_x) { $thumb_x = floor($big_x * ($small_y / $big_y)); $thumb_y = $small_y; } elseif ($dim_priority=="Width") { $thumb_x = $small_x; $thumb_y = floor($big_y * ($small_x / $big_x)); } elseif ($small_y>$big_y && $small_x>$big_x) { $thumb_x = $big_x; $thumb_y = $big_y; } else { $thumb_x = floor($big_x * ($small_y / $big_y)); $thumb_y = $small_y; } .................. } В результате : Пишу такое предложение из личного наболевшего,где при маленьких изображениях создавалась "расплывчистая" миниатюра и т.д. На вопрос "А чё трудно вместо миниатюры использовать оригинал" отвечу сразу - оригинал оригиналом,а хочется чтобы и миниатюры всех изображений создавались с умом а не "как нибудь" [url=http://ka13.orgfree.com]KA13[/url] - The essence of creativity
|
Sergeich |
|
---|---|
А я бы ещё ввёл настройку, чтобы создавать при желании квадратные миниатюры. А также, чтобы при желании создавалось два варианта миниатюр - большая и маленькая. Кстати, всё это можно реализовать без правки ядра, на уровне плагина.
|
SunChase |
|
---|---|
при желании квадратные миниатюры
а разве это невыполняется при отключении в настройках "Сохранять пропорции" и выставлении ширины и высоты миниатюр? чтобы при желании создавалось два варианта миниатюр ну если похучатся то можно в админку в настройки вписать ещё 2 поля для задавания размеров "вторых" миниатюр и также поковырять это в системе на предмет создания. Кстати, всё это можно реализовать без правки ядра, на уровне плагина. если ты за то что написано мною выше,то я считаю данные изменения просто необходимыми (и исполненными в следующих версиях Кота),а не предметом чьих либо бзиков.Лично я долго чухался над этим ньюансом,пока невзял книгу по ПХП и не сделал сам. [url=http://ka13.orgfree.com]KA13[/url] - The essence of creativity
|
Perceive |
|
---|---|
Насчёт приоритетов высоты/ширины. У меня на сайте миниатюры грузят "блондинки". К одной статье загрузят горизонтальную картинку, к другой вертикальную. Равнялось по ширине, но в итоге такой безобразный разброс высоты иногда получался. В итоге надоело и подсмотрел как делается обрезка под нужные размеры. Т.е. чтобы и высота и ширина соответствовали заданной. Вообще, должен быть выбор между опциями обрезки, но для миниатюр страниц обрезка под заданные размеры, считаю, должна быть по умолчанию.
Код для плугина pagethumb Seditio. Думаю, сложностей в понимании не возникнет.
if(!empty($_FILES['thumb']['tmp_name']) && empty($error_string) && $pid != 0)
{
$width = imagesx($image);
$height = imagesy($image);
$new_width = $cfg['plugin']['pagethumb']['width'];
$new_height = $cfg['plugin']['pagethumb']['height'];
$image_resized = imagecreatetruecolor($new_width, $new_height);
$wm = $new_width / $width;
$hm = $new_height / $height;
if ($wm>$hm)
{
$new_height = $height * $wm;
}
else
{
$new_width = $width * $hm;
}
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
$cfg['pagethumb_dir'] = 'datas/pagethumb/';
$thumb = $pid."-thumb.jpg";
$thumbpath = $cfg['pagethumb_dir'].$thumb;
if (file_exists($thumbpath )){ unlink($thumbpath ); }
imagejpeg($image_resized, $thumbpath, 70);
|