Автор Тема: Размер картинки  (Прочитано 7176 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« : 14 Марта 2007, 20:26:58 »
Подскажите, пожалуйста, кто знает, как определить размеры картинки средствами PHP, если картинка взята из базы данных.

Заранее благодарен.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Размер картинки
« Ответ #1 : 14 Марта 2007, 23:50:35 »
Размер в смысле ширина и высота, или размер в смысле размер в байтах?

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #2 : 15 Марта 2007, 16:42:38 »
Именно ширина и высота в пикселах.
ImageSX и ImageSY почему-то не помогают.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Размер картинки
« Ответ #3 : 15 Марта 2007, 17:08:16 »
Цитировать
pahal:
ImageSX и ImageSY почему-то не помогают.


Что это такое?

А что мешает записывать размеры в таблицу при сохранении изображения, если уже они так нужны. По-моему посмотреть никак не получится, это ведь всего лишь набор байтов.

Как вариант сохранять картинку на диск, вызывать для неё [p]getimagesize[/p], потом удалять картинку.

Но лучше все же писать размеры при сохранении в базу.

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #4 : 15 Марта 2007, 17:37:33 »
Да, пожалуй, ты прав, спасибо за дельную мысль!

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #5 : 15 Марта 2007, 18:32:40 »
Вот только превьюшка картинки из базы не получается, если не использовать промежуточные файлы. Напрямую с потоком байтов из базы функция ImageCreateFromJpeg не хочет работать, а предполагалось вообще обойтись без файлов.
Поток байтов из базы не воспринимается библиотекой GD как resource image?

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Размер картинки
« Ответ #6 : 15 Марта 2007, 19:02:43 »
А есть смысл хранить изображения в таблице?

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #7 : 15 Марта 2007, 19:06:16 »
В том-то и дело, что понадобилось хранить в таблице, но не только изображения, а вообще все файлы по проекту, а для картинок нужно делать маленькие превьюшки.
Вот и появилась проблемка создать превьюху из картинки.
С остальными файлами всё нормально.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Размер картинки
« Ответ #8 : 15 Марта 2007, 19:11:17 »
Ну опять же как вариант, создавать preview при загрузке файла и хранить его в таблице.

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #9 : 15 Марта 2007, 20:37:44 »
Это, конечно, хорошо, вот только превьюха может быть разного размера, при чём в разным местах может выводится по разному, по сему на разные случаи жизни создавать превьюхи и пихать их в таблицу - это уже круто.
Вопрос в том как из потока байтов из базы сделать resource image?

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Размер картинки
« Ответ #10 : 16 Марта 2007, 02:38:40 »
Цитировать
pahal:
Вопрос в том как из потока байтов из базы сделать resource image?

пожалуй никак
надо было сразу сохранять файлы на диск, а базу писать путь.

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #11 : 16 Марта 2007, 14:17:47 »
Я ж уже указывал, что нужно все файлы именно в базу писать...
Сохранять их на диске, в базе держать названия и прочее, это всё понятно и просто, тут никаких вопросов нету.

Оффлайн Egorsha

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #12 : 16 Марта 2007, 17:34:26 »
Решал подобную задачу.
Без использования временных файлов - не получится видимо.

Вот кусочек класса (немного подредактированный).



//*****************************************************
//  Изменение масштаба рисунка в зависимости от параметра
//     (используется временный файл)
//***************************************************** function PrintFotoResize($id, $kod)
  
{
  
	
$this->pIdPhoto=$id;
  
	

    
$this->GetFoto();
    
$tmpfname tempnam ("/temp""img");
    
$fp fopen($tmpfname"w");
    
fwrite($fp$this->pPhoto);
    
fclose($fp);
       
$im=imagecreatefromjpeg($tmpfname);
       
$size=getimagesize($tmpfname);
       
$koef1=0.15;
       
$koef2=0.25;
    
unlink($tmpfname);
    switch(
$kod)
    {
    
	
case 
"small": { $new_w=intval($size[0]*$koef1); $new_h=intval($size[1]*$koef1); break; }
    
	
case 
"medium": { $new_w=intval($size[0]*$koef2); $new_h=intval($size[1]*$koef2); break; }
    
	
case 
"large": { $new_w=$size[0]; $new_h=$size[1] ;break; }
	
}
     
$im1=imagecreatetruecolor($new_w,$new_h);
     
$kd=imagecopyresized($im1,$im,0,0,0,0,$new_w,$new_h,$size[0],$size[1]);

     if(
$kod==="large")
     {
      
$my_www imagecolorallocate($im1000);
      
imagefilledrectangle ($im1$size[0]-145$size[1]-16$size[0]-3$size[1]-3imagecolorallocate($im1255255255));
      
ImageString($im15$size[0]-140$size[1]-17"www.mysite.ru"$my_www);
     }
   if (!
headers_sent()) { header("Content-type: image/jpeg"); }
  
Imagejpeg($im1);
  
ImageDestroy($im1);
}

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #13 : 16 Марта 2007, 17:50:55 »
Жаль, конечно, но всё же на промежуточных файлах основано.
Всё пытаюсь отойти от файлов, с файлами-то уже давно простое решение имеется, хоть и не с временными, но всё равно с файлами.

Но всё равно спасибо!

Оффлайн pahal

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 126
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Размер картинки
« Ответ #14 : 16 Марта 2007, 18:33:25 »
Всё, как обычно решилось простым образом.
Нужно было просто все функции GD изучить и всё.
imagecreatefromstring(), и всё дела.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28