Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Превью изображения
 
 автор: ekstrom   (18.04.2010 в 20:28)   письмо автору
 
 

Что необходимо прописать в коде,чтоб размер(в кб) картинки на странице был меньше,чем настоящий.например настоящий размер изображения 240*320(размер 26кб),а в превью на странице 60*80(<26кб).

  Ответить  
 
 автор: tvv123456   (18.04.2010 в 20:43)   письмо автору
 
   для: ekstrom   (18.04.2010 в 20:28)
 


<?
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; 
                             
$kr = $size['0']/$size['1'];
                                  
$height = $width/$kr;
                                 
$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]); 
                                        
                                
imagejpeg          ($idest, $dest, $quality                    ); 
                                  
imagedestroy       ($isrc                                      ); 
                                  
imagedestroy ($idest                                           ); 
                                                return 
true; 

                   } 



Вы зываем так:

img_resize(Откуда, 'Где сохраняем, ширина, высота(необязательно расчитываеться автоматически));

  Ответить  
 
 автор: ekstrom   (18.04.2010 в 20:49)   письмо автору
 
   для: tvv123456   (18.04.2010 в 20:43)
 

А как например вставить в этот код?
$file_name = $_FILES['img1']['name'];
$file_name = strrchr($file_name, ".");
$filename = $_FILES['img1']['tmp_name'];






$s = "ORDER BY `id` DESC";
$bd = mysql_query("select * from newyear $s LIMIT 0,1;");
$list = mysql_fetch_array($bd);
$nom=($list['id']+1);
$ext = substr($_FILES['img1']['name'], 1 + strrpos($_FILES['img1']['name'], "."));
$ext =mb_strtolower($ext);
$size = $_FILES['img1']['size'];
$siz = round(($size/1024), 2);
if (@move_uploaded_file($filename, "$nom.$ext") && 
(mysql_query
("INSERT INTO `newyear` 
( `foto`, `size`)
VALUES
('$nom.$ext', '$siz')
")
))
{
echo 'Успешно.';
echo'<br><a href=".">Вернутся</a><br>';
} 
else 
{
echo 'Ошибка.';
echo'<br><a href=".">Вернутся</a><br>';
}

  Ответить  
 
 автор: sim5   (18.04.2010 в 20:51)   письмо автору
 
   для: tvv123456   (18.04.2010 в 20:43)
 

Много лишнего, не нужного.

  Ответить  
 
 автор: tvv123456   (18.04.2010 в 20:52)   письмо автору
 
   для: sim5   (18.04.2010 в 20:51)
 

Да есть чуток, все руки не доходят подправить(надеюсь сейчас хоть дойдут у кого-нить:), просто изначально код был для наложения изображения на фон.

  Ответить  
 
 автор: sim5   (18.04.2010 в 20:53)   письмо автору
 
   для: tvv123456   (18.04.2010 в 20:52)
 

Да не чуток, а прилично.

  Ответить  
 
 автор: ekstrom   (18.04.2010 в 20:51)   письмо автору
 
   для: tvv123456   (18.04.2010 в 20:43)
 

Или же сразу в этот..
while($mess = mysql_fetch_array($res5))
{
printf("<div class=kntent><br><img src ='%s' height='$shir' width='$vis'></img><br><a href='%s'>%s</a> [%s KB]<br>",$mess["foto"],$mess["foto"],$mess["foto"],$mess["size"]);
}

  Ответить  
 
 автор: tvv123456   (18.04.2010 в 20:54)   письмо автору
 
   для: ekstrom   (18.04.2010 в 20:51)
 

Код создает картинку и сохраняет ее на диске. Относительный путь указан во втором параметре функции, просто сохраняйте этот путь в базу и просто тупо выводите.

  Ответить  
 
 автор: ekstrom   (18.04.2010 в 20:58)   письмо автору
 
   для: tvv123456   (18.04.2010 в 20:54)
 

Не могли бы Вы показать как это выглядит..

  Ответить  
 
 автор: sim5   (18.04.2010 в 21:00)   письмо автору
 
   для: ekstrom   (18.04.2010 в 20:58)
 

А вас ни сколько не смутит, если изображение просто не загуризится?

  Ответить  
 
 автор: tvv123456   (18.04.2010 в 21:03)   письмо автору
 
   для: sim5   (18.04.2010 в 21:00)
 

Да нет если сделать все нужные проверки загружаемого файла, то картинка загрузиться(ниодного сбоя не было). А чистить код если честно лень :)

  Ответить  
 
 автор: tvv123456   (18.04.2010 в 21:01)   письмо автору
 
   для: ekstrom   (18.04.2010 в 20:58)
 


<?
// проверяем все параметры загруженного файла
$a = $HTTP_POST_FILES["userfile"]["tmp_name"];
// тут всякие проверки $a
img_resize($a, 'prevew/img1'.jpg', 370, 300); 

Сохраниться в папку 'prevew/img1.jpg' - этот путь заносим в базу

  Ответить  
 
 автор: sim5   (18.04.2010 в 21:05)   письмо автору
 
   для: tvv123456   (18.04.2010 в 21:01)
 

$_FILES["userfile"]["tmp_name"];

Проверять сперва нужно, что файл загружен, дабы не перемолачивать в пустую вздух. Не надо советовать "тупо".

  Ответить  
 
 автор: tvv123456   (18.04.2010 в 21:08)   письмо автору
 
   для: sim5   (18.04.2010 в 21:05)
 

>Проверять сперва нужно, что файл загружен, дабы не перемолачивать в пустую вздух.

Дак это я подразумевал когда писал: "// проверяем все параметры загруженного файла "
Ладно пойду учиться правильно излогать свои мысли :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования