|
|
|
|
|
для: sl1p
(31.08.2008 в 11:00)
| | Заходите на сайт http://ru.php.net почаще, меньше вопросов буит и скачайте себе документацию | |
|
|
|
|
|
|
|
для: sim5
(31.08.2008 в 18:16)
| | Небольшое дополнение ответа sim5:
<?php
imagepng($resource, $filename, $quality);
// $quality - коэффициент сжатия от 0 до 9
?>
|
http://ru.php.net/manual/ru/function.imagepng.php | |
|
|
|
|
|
|
|
для: SS
(31.08.2008 в 18:01)
| | 1. В функции уменьшения изображения определять тип изображения, которое нужно уменьшить. В зависимости от типа открывать и создавать соответсвуюший тип файла.
2. А вы хотите, сильно уменьшив изображение, не потерять в качестве? Для JPG изображения можно указывать третим параметром качество 100% (по умолчанию оно равно 75%):
imagejpeg($im, '', 100); | |
|
|
|
|
|
|
|
для: sim5
(31.08.2008 в 16:33)
| | Еще возникло два небольших вопроса:
1. Не обрабатывается gif.
2. Как выводить превьюшки с максимальным качеством? а то картинки после обработки заметно теряют в качестве. | |
|
|
|
|
|
|
|
для: sim5
(31.08.2008 в 16:33)
| | Все, победа! Спасибо! :)))) | |
|
|
|
|
|
|
|
для: SS
(31.08.2008 в 16:19)
| | Вы можете параметру запроса передавать как имя файла, так и ваш полный путь к нему. Например, назовем файл скрипта, который будет уменьшать изображение, как img_small.php и поместим в него функцию уменьшения изображения:
<?
function resizeImage($f, $w, $h) {
$im = imagecreatetruecolor($w,$h);
imagefill($im, 0, 0, 0x0);
$pic = imagecreatefromjpeg($f);
$x = $y = 0;
$wr = $w; $hr = $h;
$ws = imagesx($pic);
$hs = imagesy($pic);
if ($ws/$hs < 1) {
$wr = round(($ws * ($h/$hs)*100)/100);
$x = ($w-$wr)>>1;
} else {
$hr = round(($hs * ($w/$ws)*100)/100);
$y = ($h-$hr)>>1;
}
imagecopyresampled($im, $pic, $x, $y, 0, 0, $wr, $hr, $ws, $hs);
header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
imagedestroy($pic);
}
//здесь если передаем только имя, то добавляем путь к нему
//иначе предаем полученный параметр
resizeImage($_GET['im'], 60, 80);
?>
|
В файле, в котором получаете из базы имена файлов, можете обрезать путь, получая только имя файла, либо весь полный путь:
<?
//только имя
echo "<img src=\"img_small.php?im=" .basename($img['img0']). "\" />";
//полный путь
echo "<img src=\"img_small.php?im=" .$img['img0']. "\" />";
//наличие файла желательно проверять,
//чтобы не получать багов при выводе
|
В чем проблема? | |
|
|
|
|
|
|
|
для: sim5
(31.08.2008 в 16:03)
| | И куда это подставлять? Моя задача — вывести в цикле превьюшки одного размера. Пока что не получилось. Примеры моего запроса и вывода на экран я привел. Если не трудно, просто поправьте в моем коде, как это сделать и как это вывести, а то уже целый день переписываемся, а воз и ныне там. Еще раз прошу прощения за непонятливость и назойливость, но очень надо. :) | |
|
|
|
|
|
|
|
для: SS
(31.08.2008 в 15:55)
| |
<?
$url = "http://site.ru/art/p0055-0.jpg";
$file = basename($url);
echo $file;
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(31.08.2008 в 14:26)
| | Пожалуйста, приведите пример кода с полным путем, а то у меня никак не получается, уже пар идет. | |
|
|
|
|
|
|
|
для: SS
(31.08.2008 в 14:00)
| | Ну берите полный путь, либо вырезайте имя из этого пути. Кстати, с помощью того же РНР, не так сложно модифицировать записи в базе, оставив только имена файлов, а пути, если они необходими, занести в файл конфигурации. Так, что руками не так много придется делать. | |
|
|
|
|