Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Хитрости и секреты создания сайтов


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Интернет / Хитрости и секреты создания сайтов

Выпуск № 123
от 26.04.2007, 00:05

Администратор:Ерёмин Андрей
В рассылке:Подписчиков: 433, Экспертов: 53
В номере:Вопросов: 1, Ответов: 1


Вопрос № 83503: Мне нужно выкладывать фотографии на сайт. Как или с помощью каких средств это сделать лучше? СПАСИБО!!!...

Вопрос № 83.503
Мне нужно выкладывать фотографии на сайт. Как или с помощью каких средств это сделать лучше? СПАСИБО!!!

Приложение:

Отправлен: 20.04.2007, 23:46
Вопрос задал: GReeN PunK (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zolton007
Здравствуйте, GReeN PunK!
Мое личное мнение - написать скрипт фотоальбома самому. Например на PHP. Т.е. сделать форму загрузки фотографий на сервер. Сразу все можно загружать, наример, архивом и распаковывать его уже на сервере. Что качается скрипта, - есть много вариантов реализации. например, с БД или без БД. Если использовать БД проще будет делить фотографии по группам. Хотя эту задачу можно решить и без БД. В общем, тут дело фантазии. По поводу маленьких фоток -

<?
/*if (!$max_width) $max_width = 100;
if (!$max_height) $max_height = 100;
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if ( ($width <= $max_width) && ($height <= $max_height) ) {
$tn_width = $width;
$tn_height = $height;
}else if (($x_ratio * $height) < $max_height) {
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$src = ImageCreateFromJpeg($image);
$dst = ImageCreate($tn_width,$tn_height);
ImageCopyResized($dst, $src, 0, 0, 0, 0,$tn_width,$tn_height,$width,$height);
header("Content-type: image/jpeg");
ImageJpeg($dst, null, -1);
ImageDestroy($src);
ImageDestroy($dst);*/
// f - имя файла
// type - способ масштабирования
// q - качество сжатия
// src - исходное изображение
// dest - результирующее изображение
// w - ширниа изображения
// ratio - коэффициент пропорциональности
// str - текстовая строка

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

//Здесь как обычно проверяются входные параметры. Вы, конечно, можете задать более жёсткие условия проверки. Смотрим дальше.

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

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

// если размер исходного изображения
// отличается от требуемого размера
if ($w_src != $w)
{
// операции для получения прямоугольного файла
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 = "ioptstudio";
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);
}

?>

Этот скрипт преобразует картинку в маленькую :)
Т.к. скрипт уже с комментариями, тут комментариев писать не буду.
Пример использования:
<img src=resize.php?f='filename.jpg&type=1'>

Удачи. BYE.
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 10-ый класс)
Ответ отправлен: 21.04.2007, 12:35
Оценка за ответ: 5
Комментарий оценки:
Ну спасибо)) Будем разбираться потихонечку. На самом деле надо немного хотя бы php подучить и java. А описания, как вы дали, очень даже кстати))


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.50 (beta) от 15.04.2007
Яндекс Rambler's Top100

В избранное