|
|
|
| Суть такая есть картинка у которой внизу надпись возможно ли как то эту надпись убрать укоротить как то картинку что ли обрезать и тд. ? И если возможно скажите как. Спасибо | |
|
|
|
|
|
|
|
для: sata
(19.04.2005 в 21:55)
| | А не проще фотошопом (или даже паинтом) обрезать или залить безветной линией и сохранить под другим именем? А потом чередовать вывод: если нужна картина с надписью, то отображаешь её, если нет, то переделанную
if ($nadpis = "da")
{
?>
<img src = "./img/img_with_nadpis.jpg>
<?php
}
else
{
?>
<img src = "./img/img_with_out_nadpis.jpg>
<?php
}
|
| |
|
|
|
|
|
|
|
для: Dimrix
(19.04.2005 в 22:22)
| | Ну это совсем мудрено!!! Проще изменить размер изображения средствами HTML img size, ну аесли совсем нужно извратиться и поменять изображение под себя, читай тут: http://abc.tsi.lv/cgi/index.cgi?id=728 | |
|
|
|
|
|
|
|
для: $OMEGA
(20.04.2005 в 00:11)
| | Не размер человеку изменить нужно, а убрать надпись в части избражения(если я правильно понял). Т.е. если сжимать изображение - она всёравно будет видна.
P.S. да и зачем лишний раз комп грузить. Может я переучился в своё время, но привык сравнивать операции и ставить в работу самую мелкоёмную для процессора и памяти. Ведь как не курути, обрезка методами ПХП будет больше занимать процессорного времени, чем проверка 1 условия(вывод изображения будет в обоих случаях, поэтому не рассматриваю его). В случае накладывания рисунка цветом фона страницы (заплатка на надпись), будет кушаться чуть больше памяти раз и сайт чуть больше весить будет 2. Ну а тут нагрузка не на проц или память, а на разработчика :-) . Я не говорю что моё предложение наилучшее, наверняка есть ещё далеко не один вариант решения задачи, просто из пока что предложенных, данный вариант будет меньше грузить проц и не будет толстеть от лишних обьектов, а значит при тех же условиях вашем сайтом могут пользоваться на х-человек больше... | |
|
|
|
|
|
|
|
для: Dimrix
(20.04.2005 в 09:10)
| | >Ведь как не курути, обрезка методами ПХП будет больше занимать процессорного времени
>Ну а тут нагрузка не на проц или память, а на разработчика :-) .
В настоящее время, процессорное время несравнимо дешевле, чем трудозатраты разработчика. А уж тем более квалифицированного разработчика. Естественно, применительно к PHP и сайтостроению воообще.
Если взять ваш метод за базовый критерий, то нужно немедленно прекратить использовать PHP и прочие серверные технологии, а все страницы верстать вручную на HTML. Сервер, действительно, будет "летать". | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(20.04.2005 в 12:41)
| | От ПХП глупо отказываться, но писать с наименьшими потерями для проца памяти и не загружать лишний раз передачей ненужной информации канал я думаю стоит.
>В настоящее время, процессорное время несравнимо дешевле,
>чем трудозатраты разработчика.
Я думаю обрезка картинки займет не более 2 минут (с загрузкой выгрузкой фотопопа), а вот накладывать "заплатку" или расчёт сжатия займёт не на много меньше. А по поводу процессорного времени... если для себя как аматор пишешь, то согласен полностью, но если пытаешься писать по подобию профессионалов, тогда вспоминаешь правило "ничего лишнего". Ведь одно дело 100 пользователей на сайте, а другое несколько тысяч. Тогда это время процессора равное лишней 1мс превращаются в секунды... | |
|
|
|
|
|
|
|
для: Dimrix
(20.04.2005 в 17:25)
| | >Я думаю обрезка картинки займет не более 2 минут (с загрузкой выгрузкой
фотопопа)
Можно привести контраргументы :)
А если изображений несколько тысяч штук?
Или они постоянно добавляются и добавляются людьми, которые не имею навыков работы с графическими программами.
В итоге мы сойдемся на том, что при выборе решения всегда нужно исходить из поставленной задачи.
Безусловно, скорость выполнения и оптимизация кода важны, но задачи где это выходит на первый план встречаются не так часто (в PHP).
В большинстве коммерческих разработок сайтов во главу угла ставится скорость разработки, а не скорость выполнения кода. И это правильно, так как очень и очень небольшое число сайтов являются посещаемыми и создают ощутимую нагрузку на сервер. При разработке приложений, работа которых предполагает большую нагрузку, приоритеты, естественно, изменяются. | |
|
|
|
|
|
|
|
для: Dimrix
(20.04.2005 в 09:10)
| | Предложеная статья - это основа и при недолгих размышлениях ясно - как не только изменить размер, но и обрезать графику, если ето делать при закачке файла на сервер - процессорное время тратится один раз и при просмотре не используется + затраты на создание - ЕДИНОВРЕМЕННЫЕ! А в последствии все автоматизировано. Ну и конечно приятнее серым веществом щевелить, чем выполнять однообразные манипуляции с адобовскими продуктами. | |
|
|
|
|
|
|
|
для: sata
(19.04.2005 в 21:55)
| | Это несложно сделать если
1. На сервере установлена библиотека GD для работы с графикой
2. Вы точно знаете координаты это надписи. Т.е., например, точно известно, что она лежит на растоянии 100 пикселей от нижнего края изображения.
Эти условия выполняются? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(20.04.2005 в 04:48)
| | Дело в том что картинки будут подгружаться динамически и вручную следственно невозможно исправить да и исчезать они будут буквально через несколько дней. | |
|
|
|
|
|
|
|
для: sata
(20.04.2005 в 10:59)
| | Хм… но не важно как будут подгружаться картинки и как долго они будут лежать на сервере. Для того, чтобы средствами PHP можно было изменить изображение, нужно определиться с алгоритмом (что вырезаем, откуда и как) и запрограммировать его.
PHP же нельзя сказать: вырежи, мешающую мне надпись. Но можно сказать обрежь изображение снизу на, например, 150 пикселей. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(20.04.2005 в 12:35)
| | Дык мне это и надо тока я незнаю как :) | |
|
|
|
|
|
|
|
для: sata
(21.04.2005 в 09:36)
| | Для начала, хотя бы ответье на мои вопросы. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(21.04.2005 в 09:57)
| | 1. да установлено
2. да точно знаю что на сколько убрать | |
|
|
|
|
|
|
|
для: sata
(21.04.2005 в 18:10)
| | Можно по разному преобразовывать изображения.
1. Можно обрезать во время добавления
2. Можно преобразовывать изображения "на лету", не сохраняя изменения в файлах.
Приведу код для второго варианта. Первый файл img.php содержит код, обрезающий изображения.
img.php
<?
$filename = $_GET["file"];
// Известно, что исходное изображение нужно обрезать
// на 150 пикселей. Заносим это значение в переменную
$clip = 150;
if ($filename=="") exit();
// Создаем исходное изображение
$image = imagecreatefromjpeg($filename);
if ($image=="") exit;
// Определяем размеры исходного изображения
$size = getimagesize($filename);
// Вычисляем размеры нужного изображения,
// которые равны размеру исходного изображения - 150 пикселей снизу
$img_dst = imagecreate($size[0], $size[1]-$clip);
// Копируем само изоббражение
imagecopy($img_dst, $image, 0, 0, 0, 0, $size[0], $size[1]);
// Выводим изображение в браузер
header("Content-type: image/jpeg");
imagejpeg($img_dst);
// Удаляем изображения из памяти
imagedestroy($image);
imagedestroy($img_dst);
?>
|
Этот файл нужно подставлять в параметр src тега <img>
на страницу, где используются изображения
<img src="img.php?file=img.jpg" border="0" alt="">
|
Имя файла, который необходимо преобразовать, передается в параметре ?file=img.jpg. И на странице отображается уже измененая картинка. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(22.04.2005 в 04:40)
| | Спасибо | |
|
|
|
|
|
|
|
для: sata
(22.04.2005 в 09:54)
| | А ещё вопросик один а как осуществить динамическое уменьшение изображения типа при аплоэде на сервер оно автоматически уменьшалось до определённых параметров. Спасибо | |
|
|
|
|
|
|
|
для: sata
(23.04.2005 в 14:14)
| | В теме по ссылке описывается функция уменьшения изображений.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145
А по этой ссылке находится статья по работе с графикой средствами PHP.
http://www.softtime.ru/info/articlephp.php?id_article=38 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(23.04.2005 в 15:06)
| | Непонятно а каким макаром зделать так чтобы на выходе картинка получалась цветная, а то на данный момент она чёрно-белая | |
|
|
|
|
|
|
|
для: sata
(17.06.2005 в 15:49)
| | Вот код уменьшения изображения
файл назвать preview.php
<?
$file_name=$_GET['image'];
$y=80;#px //будущий размер изображения в пикселях по высоте
$simg = getimagesize($file_name);
$h = $y;
$w = $h*$simg[0]/$simg[1];
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);
// получим размеры исходного изображения
$size_img = getimagesize($file_name);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
if ($src_ratio>$ratio)
{
$old_h=$size_img[1];
$size_img[1]=floor($size_img[0]/$ratio);
$old_h=floor($old_h*$h/$size_img[1]);
}
else
{
$old_w=$size_img[0];
$size_img[0]=floor($size_img[1]*$ratio);
$old_w=floor($old_w*$w/$size_img[0]);
}
// исходя из того какой тип имеет изображение
// выбираем функцию создания
$path_parts= pathinfo($file_name);
$ext = $path_parts["extension"];
switch ($ext)
{
case "jpg":
$src_img = imagecreatefromjpeg($file_name);
break;
case "gif":
$src_img = imagecreatefromgif($file_name);
break;
case "png":
$src_img = imagecreatefrompng($file_name);
break;
default:
break;
exit();
};
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// в зависимости от типа файла выбирвем функцию сохранения в файл
switch($ext)
{
case "jpg":
header("Content-type: ".image_type_to_mime_type(IMAGETYPE_JPEG));
imagejpeg($dest_img);
break;
case "gif":
header("Content-type: ".image_type_to_mime_type(IMAGETYPE_JPEG));
imagejpeg($dest_img);
break;
case "png":
header("Content-type: ".image_type_to_mime_type(IMAGETYPE_PNG));
imagepng($dest_img);
break;
default:
exit();
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
?>
подключать изображение <img src='preview.php?image=address_image'>
|
| |
|
|
|
|
|
|
|
для: cernos
(17.06.2005 в 18:05)
| | Спасибо конечно но с уменьшением я уже давно разобрался суть в скрипте по обрезанию изображения. Скрипт выдаёт чёрнобелое изображение почему я впринципе понимаю нужно добавить в скрипт строки определения цвета если я прав, тока что то неполучается. | |
|
|
|