Проблема с размером картинок. На сайте www.sos.ru

ant

Турист
Credits
0
Господа, у меня такая проблема. На сайте размещаются объявления. К каждому объявлению прилагается фотография. Дело в том, что те, кто размещают объявления, чаще всего не знают не только как изменить размер картинки, но и то, в каком формате они картинки размещают.
Подскажите, как с помощью скрипта на PHP можно решить проблему автоматического изменения размера размещаемых на сайте картинок. И, самое главное, как эту проблему, изменения размера картинок, решить корректно? Потому что пользователи нуждающиеся в помощи, размещают разные фотографии. То фотография очень длинная, то есть, большая в длину и не очень в ширину, то -- наоборот.
Кто решал такие проблемы, поделитесь пожалуйста опытом? Дело в том, что мы с другом только поддерживаем сайт и платим за хостинг и домен. Сайт устроен так, что те, кто может оказать помощь, напрямую связываются с теми, кто в этой помощи нуждается. Через нас ничего не проходит, и мы этому очень рады, потому что сайт создан исключительно для благотворительности.
Еще, желательно чтобы скрипт проверял формат файла. Потому что размещающие объявления люди прикрепляют в то место, где должна быть фотография... в общем, какие только файлы они не прикрепляю. И вордовские, и екселевские. В общем, с этим тоже есть проблема, но подозреваю, что у нее попроще решение.
Кто может с этим помочь, или подсказать решение? Я имею в виду с изменением размера и с форматами файлрв?
Спасибо!
Пусть Бог вас благословит!
 

tooner

Турист
Credits
0
Я использую такой класс
PHP:
<?
class thumbMaker{
var $extension;
var $upfile;
var $dstfile;
function makeThumb($max_width, $max_height, $upfile, $dstfile){
  
   $size = GetImageSize($upfile);
         $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;
         }
         elseif (($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;
         }
 if ($this->extension == "jpg"){
     $src = ImageCreateFromJpeg($upfile);
     $dst = ImageCreateTrueColor($tn_width, $tn_height);
     ImageCopyResized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
     ImageJpeg($dst, $dstfile);
 } else {
 $src = ImageCreateFromGif($upfile);
     $dst = ImageCreateTrueColor($tn_width, $tn_height);
     ImageCopyResized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
     ImageGif($dst, $dstfile);
 }
}
}
?>

Пример использования (скрипт обрабатывает файлы в директории и складывает уменьшенные копии в другую папку)
PHP:
<?php 
require_once ('tmbmaker.php');
$tum = new thumbMaker;
$dir = './img/';
$files = scandir($dir);
foreach ($files as $path)
{
$file = "./img/".$path;
if (!is_dir($file))
			{
$filename = "./img/small/".$path;
if (!file_exists($filename))
{    
   $grabExt = explode(".", $path);
$tum->extension = $grabExt[1];
$tum->makeThumb(50,50, $file, $filename);
$content="Обработка файла ".$path." Готово! <br>";
fwrite($handle, $content);
if($_GET['a']==1)
{
echo $content;
}
				}
           
			}			
}
?>

Если возникнут сложности с использованием - говори. Еще можно пошарится на phpclasses.org - там много всего полезного можно найти

А по поводу формата файла - написать предупреждение, а поле для выбора файла сделать примерно так:
<input type="file" accept="image/jpeg,image/gif">
 
Последнее редактирование модератором:
Сверху