[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод уменьшеных изображений
z3rg
как выводить изображения в уменьшеном виде
тоесть не сжимать в браузере, а чтобы и размер его уменьшался

я так сделал вывод, но для людей с диалапом не слишком удачно

PHP
echo '<table border="0" cellpadding="0" width="100%">
    <tr>'
;
$str1="SELECT * FROM img ORDER BY id DESC LIMIT 0,5";
    
$result1=mysql_query($str1);
    while (
$row1 mysql_fetch_array($result1)) {

    echo 
'    <td align="center"><IMG SRC="/galerey/uploads/'.$row1[name].'" width="80"></td>';
    }
    echo 
'</tr>
</table>'
;




Спустя 5 минут, 6 секунд (10.03.2009 - 11:09) waldicom написал(а):
Можно применять функцию imagecopyresampled() из библиотеки GD

Спустя 27 минут, 50 секунд (10.03.2009 - 11:37) z3rg написал(а):
waldicom, спасибо, тоесть делаю так но выдает ошибку, в чем проблема

PHP
echo '
<table border="0" cellpadding="0" width="100%">
    <tr>'
;

$str1="SELECT * FROM img ORDER BY id DESC LIMIT 0,5";
    
$result1=mysql_query($str1);
    while (
$row1 mysql_fetch_array($result1)) {

function 
imageresize($outfile,$infile,$neww,$newh,$quality) {
    
$im=imagecreatefromjpeg($infile);
    
$k1=$neww/imagesx($im);
    
$k2=$newh/imagesy($im);
    
$k=$k1>$k2?$k2:$k1;

    
$w=intval(imagesx($im)*$k);
    
$h=intval(imagesy($im)*$k);

    
$im1=imagecreatetruecolor($w,$h);
    
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));

    
imagejpeg($im1,$outfile,$quality);
    
imagedestroy($im);
    
imagedestroy($im1);
    }

$outimgf=imageresize("galerey/uploads/","'.$row1[name]'.",640,240,75);
    echo 
'    <td align="center"><IMG SRC="/galerey/uploads/'.$outimgf.'" width="80"></td>';
    }
    echo 
'</tr>
</table>'
;


Warning: imagesx(): supplied argument is not a valid Image resource in ...
on line 19

Warning: imagesx(): supplied argument is not a valid Image resource in ... on line 27

Спустя 6 минут, 19 секунд (10.03.2009 - 11:43) sergeiss написал(а):
Проблема в том, что ВСЁ (ну, почти всё) сделано неправильно.
Надо создать отдельный скрипт, который будет делать ресайз. И потом уже выводить примерно так:
PHP
echo '<IMG SRC="resize.php?file=/galerey/uploads/pic1.jpg&width=80" width="80">'


Здесь:
1. resize.php - это скрипт, который делает уменьшение размеров
2. file=/galerey/uploads/pic1.jpg - имя файла для уменьшения, передаваемое скрипту.
3. width=80 - ширина, до которой надо уменьшить (если она переменная, а не фиксированнная)
4. width="80" - ширина в браузере, которую надо будет использовать; параметр не обязательный в данном случае

PS. А вот про содержание скрипта - это отдельный разговор smile.gif Он будет выглядеть примерно также, как твоя функция.

Спустя 16 минут, 6 секунд (10.03.2009 - 11:59) z3rg написал(а):
sergeiss, спсибо большое, а если изображения разных расширений, как быть в таком случае, может тогда имеет смысл делать уменьшеные копии.

Спустя 18 минут, 55 секунд (10.03.2009 - 12:18) sergeiss написал(а):
Цитата (z3rg @ 10.03.2009 - 11:59)
sergeiss, спсибо большое, а если изображения разных расширений, как быть в таком случае, может тогда имеет смысл делать уменьшеные копии.

Ну да, вобщем-то.
Ты в итоге можешь получить (если это твоя задача) картинки некоего "стандартного" размера, т.е. такого, как ты сам определишь. Чтобы сделать, допустим, превью для фотогалереи.

Спустя 41 минута, 19 секунд (10.03.2009 - 12:59) z3rg написал(а):
sergeiss, спасибо, сделал копированием, чтоб не грузить сервер

Спустя 4 часа, 8 минут, 4 секунды (10.03.2009 - 17:07) sergeiss написал(а):
Цитата (z3rg @ 10.03.2009 - 12:59)
sergeiss, спасибо, сделал копированием, чтоб не грузить сервер

Не совсем понятное решение... Ты собираешься делать это регулярно? Или это разовая работа?

Если разово, то я могу понять. А если регулярно... То лучше скрипт написать. Да и разберешься заодно до конца с этим вопросом. На самом деле это несложно smile.gif Но, в то же время, достаточно мощное средство.

Спустя 7 часов, 10 минут, 36 секунд (11.03.2009 - 00:18) rodzewich написал(а):
Я бы посоветовал использовать вот это http://pear.php.net/manual/ru/package.imag...e-transform.php

Поскольку не нужно заботится о расширениях, о типе изображения и код получается очень маленький, например:

PHP
/**
 * Скрипт маштабирования изображения
 */

require_once 'Image/Transform.php';

$it = Image_Transform::factory('GD');
// Загрузить можно абсолютно любое изображение
// типы изображений определяются поддерживаемыми драйверами PEAR
// на крайний случай можно воспользоваться exeption
$it->load('beach-large.jpg');
// маштабируем изображение по высоте 150px
$it->scaleByY(150);
// определяем тип контента
header('Content-Type: '.$it->getMimeType());
// Выводим изображение в броузер
$it->display();
exit();


И файлы прилетающие по http не мериют расширениями, в мериют типом контента (content-type). Броузеру совершенно неважно какое раширение у твоего файла.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.