Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > PHP

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 14.09.2008, 21:18   #1
Неактивный пользователь
 
Аватар для savca
 
Пол:Мужской
Регистрация: 24.04.2007
Адрес: Сочи
Сообщений: 156
Репутация: 75
Exclamation Изменение размеров изображении в PHP

Есть скрипт :

Цитата:
<?php

// f - имя файла
// type - способ масштабирования
// q - качество сжатия
// src - исходное изображение
// dest - результирующее изображение
// w - ширниа изображения
// ratio - коэффициент пропорциональности
// str - текстовая строка

// тип преобразования, если не указаны размеры
if ($type == 0) $w = 70; // квадратная 70x70
if ($type == 1) $w = 90; // квадратная 90x90
if ($type == 2) $w = 218; // пропорциональная шириной 218


// качество jpeg по умолчанию
if (!isset($q)) $q = 100;

// создаём исходное изображение на основе
// исходного файла и опеределяем его размеры
$src = imagecreatefromjpeg($f);
$w_src = imagesx($src);
$h_src = imagesy($src);

header("Content-type: image/jpeg");

// если размер исходного изображения
// отличается от требуемого размера
if ($w_src != $w)
{

//Следующая часть программы будет подгонять картинку под ширину 218 пикселей (пропорциональное уменьшение) для случая $type=1.

// операции для получения прямоугольного файла
if ($type==2)
{
// вычисление пропорций
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);

// создаём пустую картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w_dest,$h_dest);
$str = "foxweb.net.ru";
imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);

// определяем координаты вывода текста
$size = 2; // размер шрифта
$x_text = $w_dest-imagefontwidth($size)*strlen($str)-3;
$y_text = $h_dest-imagefontheight($size)-3;

// определяем каким цветом на каком фоне выводить текст
$white = imagecolorallocate($dest, 255, 255, 255);
$black = imagecolorallocate($dest, 0, 0, 0);
$gray = imagecolorallocate($dest, 127, 127, 127);
if (imagecolorat($dest,$x_text,$y_text)>$gray) $color = $black;
if (imagecolorat($dest,$x_text,$y_text)<$gray) $color = $white;

// выводим текст
imagestring($dest, $size, $x_text-1, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text-1, $y_text+1, $str,$white-$color);

imagestring($dest, $size, $x_text-1, $y_text, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text+1, $str,$white-$color);

imagestring($dest, $size, $x_text, $y_text, $str,$color);
}

//Несколько сложнее выглядит часть кода для получения квадратного фрагмента.

// операции для получения квадратного файла
if (($type==0)||($type==1))
{
// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresized($dest, $src, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)
if ($w_src<$h_src)
imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
}

// вывод картинки и очистка памяти
imagejpeg($dest,'',$q);
imagedestroy($dest);
imagedestroy($src);
}
?>

Ну и html страничка содержащая ссылки на картинки которые будут обработаны в вышеуказанный скрипт

Цитата:
<html>
<head>
<title></title>
</head>
<body>
<h3 align="center">Демонстрационный пример масштабирования картинок</h3>
<table align="center">
<tr align="center" valign="top">
<td>90*90<br><img src="resize.php?f=av.jpg&t=1&w=90&s=0" border=0 alt="Ку-ку"></td>
<td>90*90<br><img src="resize.php?f=news114.jpg&type=1" border=0 alt="Ко-ко"></td>
</tr>
<tr align="center" valign="top">
<td>218*x<br><img src="resize.php?f=av.jpg&type=2" alt="ничего" border=0></td>
<td>218*x<br><img src="resize.php?f=news114.jpg&type=2" alt="хрен маржовый" border=0></td>
</tr>
</table>
</body>
</html>

Просьба: посмотрите что здесь не правильно, у меня уже сил не хватает а может и мозгов, вроде все правильно но не работает и все - скрипт не выводит изображения
__________________
И увидел я новое небо и новую землю...(Откровение 21:1)
savca вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Магазин бытовой техники: indesit btw l50300 - переходи на сайт ТАЙМТВ!Магазин бытовой техники: телевизор artel ua43h3502 купить - переходи на сайт ТАЙМТВ!преобразователь частоты данфосс 3 квткак с авито перейти на вконтактевставка карманная фильтрующая укороченная dfum 50-25 g3


Старый 15.09.2008, 21:40   #2
savca
Неактивный пользователь
 
Аватар для savca
 
Пол:Мужской
Регистрация: 24.04.2007
Адрес: Сочи
Сообщений: 156
Репутация: 75
По умолчанию Re: Изменение размеров изображении в PHP

В общем сам разобрался, оказываеться у меня не работает передача переменных по GET, надо в начале скрипта поставить
Цитата:
if (isset($_GET['f'])) {$f=$_GET['f'];}
if (isset($_GET['type'])) {$type=$_GET['type'];}
if (isset($_GET['q'])) {$q=$_GET['q'];}

и все заработало.
Кстати - классный скрипт для сайтов, советую пользоваться им.
__________________
И увидел я новое небо и новую землю...(Откровение 21:1)
savca вне форума
 
Ответить с цитированием Вверх
Старый 20.11.2008, 20:28   #3
simulacres
Неактивный пользователь
 
Регистрация: 20.11.2008
Сообщений: 3
Репутация: 0
По умолчанию Re: Изменение размеров изображении в PHP

Он к сожалению сильно замедляет загрузку если таких изображений на сайте 10+, то становится заметно "на глаз"
simulacres вне форума
 
Ответить с цитированием Вверх
Старый 25.11.2008, 23:25   #4
theiggs
Неактивный пользователь
 
Регистрация: 25.11.2008
Сообщений: 5
Репутация: 0
По умолчанию Re: Изменение размеров изображении в PHP

Правильно говорит simulacres, такие вещи лучше делать единожды при загрузке изображений пользователем, а потом уже всё время давать в HTML ссылку на уже уменьшенную картинку. Иначе будет постоянно кушать память и ресурсы процессора, что для более-менее крупных сайтов непримлемо...
theiggs вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Fotosizer - пакетное изменение размеров изображений Alexis Графика 21 04.11.2013 17:52
Видеокарта: полосы на изображении. rebroff Компьютерные проблемы 24 23.01.2012 19:43
ImageSpyer - утилита для скрытия файлов в изображении Papa lawyer Графика 0 16.09.2009 06:02
Автоизменение размеров изоображений Cocka Архив 5 22.09.2008 21:09
Прога для изменения размеров фото Tornado_na Просмотр, конверторы и редакторы графики 8 03.07.2006 11:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:21. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.04664 секунды с 11 запросами