Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 19:28   #1
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию вывод уменьшенного изображения PHP

здравствуйте у меня возник такой вопрос.Мне нужно взять из БД изображение большого размера и вывести на странице уже уменьшенное до нужного мне размера.
увеличение по клику не нужно.
как это сделать????? заранее благодарен))

Последний раз редактировалось Alexander1311; 30.03.2012 в 19:30.
Alexander1311 вне форума Ответить с цитированием
Старый 30.03.2012, 19:40   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Alexander1311 Посмотреть сообщение
Мне нужно взять из БД изображение большого размера и вывести на странице уже уменьшенное до нужного мне размера.
Вы храните изображения в БД..??o_O
Зачем? - просто интересно..
Как это сделать - написать скрипт, который будет "на лету" ресайзить ваши изображения и отдавать их в поток.
Скорости это вашим страницам, скорее всего, не прибавит.
Или же более правильный способ - наделать миниатюр, связать их с оригиналами через БД - и выводить сразу миниатюры.
Andkorol вне форума Ответить с цитированием
Старый 30.03.2012, 21:11   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

+1 ... динамический ресайз изображений - верный способ убить сайт, начиная от 100-200 изображений. У меня так и было в начале творческого пути ... давно уже....каждое 3-4 изображение тупо загибалось...вылетая в ошибки... лог их пух как на дрожжах, при увеличении количества пользователей
ADSoft вне форума Ответить с цитированием
Старый 30.03.2012, 23:12   #4
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Вы храните изображения в БД..??o_O
Зачем? - просто интересно..
Как это сделать - написать скрипт, который будет "на лету" ресайзить ваши изображения и отдавать их в поток.
Скорости это вашим страницам, скорее всего, не прибавит.
Или же более правильный способ - наделать миниатюр, связать их с оригиналами через БД - и выводить сразу миниатюры.
я храню ссылки на изображение в БД,спасибо за совет я просто сделал миниатюры и все.
Я просто от неопытности, думал что "на лету" лучше будет))))))
Alexander1311 вне форума Ответить с цитированием
Старый 31.03.2012, 12:29   #5
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

А когда выводится изображения нельзя было сделать так
Код:
<img src="pic.jpg" width=200; height=300>
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 31.03.2012, 13:29   #6
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Цитата:
А когда выводится изображения нельзя было сделать так...
А теперь представьте, что вы выводите таким образом 10 картинок, размером по 2мб каждая.
Нормальный подход уже озвучили. Сделать миниатюры, потом спокойно их выводить на сайт. Гугл ответит на вопрос как это сделать.
Gorychev вне форума Ответить с цитированием
Старый 01.04.2012, 09:06   #7
Helion
 
Аватар для Helion
 
Регистрация: 29.04.2009
Сообщений: 9
По умолчанию

Я на своих сайтах пользую вот такой код. Файл getimg.php
Код:
<?php
$flname  = isset($_GET["fn"]) ? $flname = $_GET["fn"] : $flname = "";
$fsize   = isset($_GET["fs"]) ? $fsize  = $_GET["fs"] : $fsize  = 100; 
  if (file_exists($flname) && $flname != "") {
	$flsize = filesize($flname);
	$imageproperties = getimagesize($flname) or die ("Не допустимый тип файла.");
	$mimetype = image_type_to_mime_type($imageproperties[2]);	
	switch($imageproperties[2]) {
	  case IMAGETYPE_JPEG:
		$image = imagecreatefromjpeg($flname);	
		 break;
	  case IMAGETYPE_GIF:	
		$image = imagecreatefromgif($flname);
		break;
	  case IMAGETYPE_PNG:
		$image = imagecreatefrompng($flname);
		break;
	  default:
		die ("Не возможно создать изображение.");}
    $srcW = $imageproperties[0];
    $srcH = $imageproperties[1];
    if ($srcW > $fsize || $srcH > $fsize) {
      if ($srcW <= $srcH) $reduction = $srcH/$fsize;
	  else $reduction = $srcW/$fsize;
	  $desW = $srcW/$reduction;
  	  $desH = $srcH/$reduction;								
	  $copy = imagecreatetruecolor($desW, $desH);			
	  imagecopyresampled($copy,$image,0,0,0,0,$desW, $desH, $srcW, $srcH)
				 or die ("Ошибка при копировании изображения.");			
	  imagedestroy($image);
	  $image = $copy;			
    }
    
    header("Content-type: $mimetype");
    switch($imageproperties[2]){
	  case IMAGETYPE_JPEG:
	    imagejpeg($image,"",75);
	    break;
	  case IMAGETYPE_GIF:
	    imagegif($image);
	    break;
	  case IMAGETYPE_PNG:
	    imagepng($image,"",75);
	    break;
	  default:
	    die ("Не возможно создать изображение.");}
  } else die ("Файл: $flname не существует.");
?>
Потом где надо показать уменьшенное изображение вставляю так:
Код:
<img src="getimg.php?fn=фото.jpg'" />
Тогда будет миниатюра 100*100 пикселей. Если нужен другой размер, добавляю параметр &fs=500 - получаю рисунок 500*500 пикселей.
Ни чего не тормозит, по-крайней мере на моем сайте. Настраивайте кэширование изображений и они будут браться из кэша, а не делаться на лету, при последующих просмотрах.
Нумерология онлайн - сайт для мамы
Вертолетная авиация - сайт профессии Калитка в мой скромный блог - Асинхронные мысли и Ложь - Поиск истины

Последний раз редактировалось Helion; 01.04.2012 в 09:08. Причина: Исправил опечатку
Helion вне форума Ответить с цитированием
Старый 01.04.2012, 10:05   #8
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Helion, "на лету" делать ресайз, далеко не самый лучший вариант. Большая нагрузка на сервер происходит. Я тоже примерно так делал первое время, только с помощью библиотеки phpThumb. Потом отказались от этой практики, т.к. при большом кол-ве картирок шли жуткие тормоза.
Сейчас просто при заливке фото штампуется нужное кол-во картинок разных размеров(например - маленькое, среднее, большое) и просто потом выводится на сайт.
Gorychev вне форума Ответить с цитированием
Старый 04.04.2012, 13:48   #9
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию

да Helion,это полезная информация,если например на страницу нужно вывести несколько миниатюр,думаю в таком случае не чего страшного не произойдет??
Alexander1311 вне форума Ответить с цитированием
Старый 04.04.2012, 14:02   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

2Alexander1311 ... да конечно нет.... а вот если эту страницу в сутки присматривают 1000, 10000 раз? вот тогда и поймете о чем тут вам говорят
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ВЫВОД повернутого изображения New man Общие вопросы Delphi 1 03.01.2012 19:58
Вывод случайного изображения Dима PHP 1 16.08.2010 02:14
Некорректный вывод изображения Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 24.07.2010 00:12
вывод изображения асемблер eXen_fm Фриланс 3 07.06.2010 09:55
BitBlt, вывод изображения zotox Win Api 5 22.04.2010 21:43