- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Подскажите, как за один шаг сделать превью четко заданного размера (к примеру 50x50) с помощью imagemagick? Сейчас делаю это за два хода, сначала ресайзю до приблизительного размера (к примеру 70x70, ибо сохраняя пропорции утилита не дает точно заданных размеров), а потом кропом обрезаю до желанных и точных 50x50.
покажите текущий код
Hekcfy, будьте добры, хотя бы язык, на котором пишете, сообщите...
Подскажите, как за один шаг сделать превью четко заданного размера (к примеру 50x50) с помощью imagemagick? Сейчас делаю это за два хода, сначала ресайзю до приблизительного размера (к примеру 70x70, ибо сохраняя пропорции утилита не дает точно заданных размеров), а потом кропом обрезаю до желанных и точных 50x50.
Забей на imagemagick
вот те функция GD
function save_thumbnail($img_blob, $save_folder, $file_name, $width, $height, $bg_colour = '0xffffff') {$img_buf_gd = imagecreatefromstring ( $img_blob );
if (! $img_buf_gd)
return false;
$img_final_gd = imagecreatetruecolor ( $width, $height );
imagepalettecopy ( $img_final_gd, $img_buf_gd );
$src_width = imagesx ( $img_buf_gd );
$src_height = imagesy ( $img_buf_gd );
$multiplier = min ( $src_width / $width, $src_height / $height );
$new_width = $width * $multiplier;
$new_height = $height * $multiplier;
$new_x = ($src_width - $new_width) / '2';
$new_y = ($src_height - $new_height) / '2';
$new_thumb_x = '0';
$new_thumb_y = '0';
$new_thumb_width = $width;
$new_thumb_height = $height;
imagecopyresampled ( $img_final_gd, $img_buf_gd, ( int ) $new_thumb_x, ( int ) $new_thumb_y, ( int ) $new_x, ( int ) $new_y, ( int ) $new_thumb_width, ( int ) $new_thumb_height, ( int ) $new_width, ( int ) $new_height );
imagedestroy ( $img_buf_gd );
if (strncmp ( $img_blob, "яШя", '3' ) == '0') {
$ret = imagejpeg ( $img_final_gd, $save_folder . $file_name . '.jpg' );
imagedestroy ( $img_final_gd );
unset ( $img_blob );
if ($ret)
return $save_folder . $file_name . '.jpg';
else
return false;
} else if (strncmp ( $img_blob, "GIF", '3' ) == '0') {
$ret = imagegif ( $img_final_gd, $save_folder . $file_name . '.gif' );
imagedestroy ( $img_final_gd );
unset ( $img_blob );
if ($ret)
return $save_folder . $file_name . '.gif';
else
return false;
} else if (strncmp ( $img_blob, "‰PNG", '4' ) == '0') {
$ret = imagepng ( $img_final_gd, $save_folder . $file_name . '.png' );
imagedestroy ( $img_final_gd );
unset ( $img_blob );
if ($ret)
return $save_folder . $file_name . '.png';
else
return false;
}
return false;
}
использование
save_thumbnail ( изображение, папка, имя файла на выходе, ширина, высота );
Юзаю везде её. Длеает кропинг сама, тоесть делает ресайз с сохранением всех пропорций.
Немного не понятно но использованию
save_thumbnail ( изображение, папка, имя файла на выходе, ширина, высота );
тут путь к изображению ? $image_path ?
function ResizeImagePoBokam($image_from,$image_to, $fitwidth=450,$fitheight=450,$quality=75){
$size=GetImageSize($image_from);
$i = ImageCreateFromJPEG($image_from);
$o = ImageCreateTrueColor($fitwidth, $fitheight);
if(!$o) $o=ImageCreate($fitwidth, $fitheight);
$white = imagecolorallocate($o, 255, 255, 255);
imagefilledrectangle($o,0,0,$fitwidth,$fitheight,$white);
$otn=$size[1]/$fitheight;
$copy_x=round($size[0]/$otn);
if($copy_x>$fitwidth)$copy_x=$fitwidth;
$copy_y=round($size[1]/$otn);
$width_w=round($copy_x*$otn);
$width_h=round($copy_y*$otn);
$start_x=floor($size[0]/2)-floor($width_w/2);
$start_y=floor($size[1]/2)-floor($width_h/2);
$dst_x=round(($fitwidth-$copy_x)/2);
imagecopyresampled($o,$i,$dst_x,$dst_y,$start_x,$start_y,$copy_x,$copy_y,$width_w,$width_h);
@unlink($image_to);
imagejpeg($o, $image_to, $quality);
imagedestroy($o);
imagedestroy($i);
}
// Схема зызова: ResizeImagePoBokam($файл_источник,$куда_сохранить(можно перезаписать источник),$ширина,$высота,$джыпег качество);
Хотя, автор наверно хочет перейти от MagickImageResize + MagickImageCrop к мифическому MagickCopyResampled
allStars делаешь например
php
$s=50; // ну, к примеру
Это если стоит MagickWand.
Если стоит Imagick, то
Если картинко не квадратное, то до 50 отресайзит наибольший размер.
Спасибо всем, собрал сборник из примеров :)
еще как бы ватермарк/лого приклеить на фото?
Не помню точно, но вроде лого должно быть сделано в PNG24, чтобы работала альфа-прозрачность
Спасибо всем, собрал сборник из примеров :)
еще как бы ватермарк/лого приклеить на фото?
Ну, если тупо в лоб, то:
$x и $y от каких точек лепить.
Естественно, опущены всякие подгонки/ресайзы и причие плюшки.