Вопрос № 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;
// операции для получения квадратного файла
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. А описания, как вы дали, очень даже кстати))