Генерация image preview в PHP

Статус
В этой теме нельзя размещать новые ответы.

sesharim

Знаток
Регистрация
3 Окт 2006
Сообщения
299
Реакции
29
Есть у меня скриптик, который тупо открывает фотографии, и выводит их в размере 100х100, но это всё равно что грузить полноценное фото по времени, хочу сделать превью, что можете посоветовать по данному поводу? :)
 
Можно не париться и в вверху html файла прописать:
<script language="JavaScript" type="text/JavaScript">
function show_pic(picname,x,y,px,py) {
win=window.open("", 'picture','menubar=0,location=0,status=0,toolbar=0,scrollbars=0,resizable=0,height=' + y + ',width=' + x );
win.document.writeln("<body bgcolor=#ffffff topMargin='0' leftMargin='0' rightMargin='0'><center><table cellPadding=0 cellSpacing=0 width=100% height=100%><tr width=100% height=100%><td width=100% height=100% align=center valign=middle><a href='javascript:window.close()'><img src='" + picname + "' width=" + px +" height=" + py +" border=0 alt='Закрыть окно'></a></td></tr></table></body>");
}
</script>

А в теле уже самого документа сделать например вот так:
<a href="javascript:show_pic('agents/003.jpg',800,600,800,600)"><img class="bord" src="agents/small/003.jpg" width="196" height="106" alt="Увеличить"></a>

Вот в принципе и всё! Ну это самый простой вариант!
 
эти примеры с vetton или других wallpaper базах я уже видел. Ты меня не понял, например идёт 100х100 картинка, которая сжатая и быстрее грузится, щелкаешь, и уже полноценная картинка открывается.
 
всё равно не то, это слишком объемно, нужна ну, можно даже сказать функция, через которою проходит картинка, функция сжимает её до размеров 100х100, но и по размеру, получается превью. :)
 
  • Заблокирован
  • #6
вот, наример.. пологаю по именам переменных все понятно..
PHP:
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{
  if (!file_exists($src)) return false;

  $size = getimagesize($src);

  if ($size === false) return false;

  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  $icfunc = "imagecreatefrom".$format;
  if (!function_exists($icfunc)) return false;

  $x_ratio = $width / $size[0];
  $y_ratio = $height / $size[1];

  $ratio       = min($x_ratio, $y_ratio);
  $use_x_ratio = ($x_ratio == $ratio);

  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

  $isrc = $icfunc($src);
  $idest = imagecreatetruecolor($width, $height);

  imagefill($idest, 0, 0, $rgb);
  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);

  $icfunc($idest, $dest, $quality);

  imagedestroy($isrc);
  imagedestroy($idest);

  return true;
}
 
тоесть пропускать это через:

PHP:
echo img_resize(адресс/картинка.джпг); ?
 
  • Заблокирован
  • #8
нет.. ф-я ресайзит и сохраняет..
$src - адрес модифицируемой картинки
$dest - куда красть модифицированную
$width - конечная ширина
$height - конечная высота
$rgb - rgp код цвета (формат: 0x + значение в шестнадцатиричном виде)
$quality - качество (для jpg)

если немного доработать - поставить проверку $dest, то можно выдавать прямо в поток (ресайзить на лету)..
 
Ресайзинг на лету будет сильно грузить сервер лучше создать еще одну вложеную папку к примеру "thumbs" и туда сохранять превьюшки каритнок в заданом размере ) При одинаковых названия весьма удобно и не запутаешься )
 
  • Заблокирован
  • #10
2 XeonN
согласен, один раз правдо приедться помучаться через скрипт или самому. хотя проще переделать предложенный скрипт что б он один раз сохранил превьюшки в нужную папку
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху