Forum Webscript.Ru

Программирование => PHP => Тема начата: H2OP от 31 Декабря 2004, 00:23:27

Название: resize картинки
Отправлено: H2OP от 31 Декабря 2004, 00:23:27
Подскажите как изменить размер загруженной через форму картинки и сохранить её с новыми размерами, т.е. как изменить и сохранить. И обязательно ли для этого нужно подключать модуль php_gd?
Название: resize картинки
Отправлено: Меняздесьдавнонет от 31 Декабря 2004, 00:45:31
не обязательно.
можно воспользоваться какой-нибудь утилитой конвертации, например, imagemagick
впрочем, чтобы воспользоваться GD, подключать её тоже не всегда обязательно. она может быть уже подключена
Название: resize картинки
Отправлено: H2OP от 31 Декабря 2004, 14:39:26
я понимаю, что если GD подключена, то её не нада уже подключать. Вопрос можно ли изменить размер картинки, которую загрузил юзер через форму, и сохранить её с другими размерами на сервере, и естественно с помощь пхп а не утилитой конвертации.
Название: resize картинки
Отправлено: Меняздесьдавнонет от 31 Декабря 2004, 15:22:15
можно
Название: resize картинки
Отправлено: H2OP от 31 Декабря 2004, 16:17:52
RomikChef
=) а если не трудно, можешь выложить кусочек кода, как изменить размер и сохранить?
Название: resize картинки
Отправлено: Меняздесьдавнонет от 31 Декабря 2004, 16:22:53
а зачем? этих кусочков на форуме - и так уже десятки.
и в документации столько же.
бери любой.
Название: resize картинки
Отправлено: H2OP от 31 Декабря 2004, 16:23:52
понятно, будем искать..
Название: resize картинки
Отправлено: Dasha от 19 Января 2005, 20:48:06
Я написала вот такую функцию для ресайза фотографии.
Может тебе пригодится.
Если надо - добавь проверку типа файла и обработку для GIF и других типов.
Удачи.

_SX, _SY - новые размеры фото, в которые надо уложиться
src_Dir - путь к папке, где лежит исходный файл
src_file - имя исходного файла
dst_Dir - путь к папке, куда сохранить новый файл
dst_file - имя под которым файл сохранить


function JPG_Resize ($_SX, $_SY, $src_Dir, $src_file, $dst_Dir, $dst_file)
{

$fname = $src_Dir . "/" . $src_file;
$s_Img = imagecreatefromjpeg($fname);

$s_Img_sx = imagesx($s_Img);
$s_Img_sy = imagesy($s_Img);

//New size
$s_Img1_sx = $s_Img_sx;
$s_Img1_sy = $s_Img_sy;

// 1) Check Width
if( $s_Img1_sx > $_SX )
{
$s_Img1_sy = $_SX * $s_Img1_sy / $s_Img1_sx;
$s_Img1_sx = $_SX;
}
// 2) Check Height
if( $s_Img1_sy > $_SY )
{
$s_Img1_sx = $s_Img1_sx * $_SY / $s_Img1_sy;
$s_Img1_sy = $_SY;
}

$s_Img1 = imagecreatetruecolor($s_Img1_sx, $s_Img1_sy);
$white = imagecolorallocate ($s_Img1, 255, 255, 255);
imagecopyresampled($s_Img1, $s_Img, 0, 0, 0, 0, $s_Img1_sx, $s_Img1_sy, $s_Img_sx, $s_Img_sy);

imagejpeg($s_Img1, $dst_Dir . "/" . $dst_file, 100);
}


Это пример вызова функции:


move_uploaded_file($file, substr(getcwd(),0,strlen(getcwd())-3) . "r_images/" . $id . "_" . $file_num . ".jpg");
JPG_Resize(160, 213, substr(getcwd(),0,strlen(getcwd())-3) . "r_images", $id . "_" . $file_num . ".jpg", substr(getcwd(),0,strlen(getcwd())-3) . "r_images", $id . "_" . $file_num . "_s.jpg");
JPG_Resize(800, 800, substr(getcwd(),0,strlen(getcwd())-3) . "r_images", $id . "_" . $file_num . ".jpg", substr(getcwd(),0,strlen(getcwd())-3) . "r_images", $id . "_" . $file_num . ".jpg");

Название: resize картинки
Отправлено: Меняздесьдавнонет от 19 Января 2005, 21:11:59
Да, с математикой, похоже, в школе проблемы были...

Хотя, в этом случае - да, пожалуй, данная функция должна быть предметом для гордости.
Название: resize картинки
Отправлено: Dasha от 19 Января 2005, 21:46:13
Что не так я написала ?
Что-то неправильно ? Я ошиблась ?
Почему ты опять наезжаешь вместо того чтобы нормально объяснить ?
Название: resize картинки
Отправлено: Меняздесьдавнонет от 19 Января 2005, 22:08:40
а разве здесь кто-то просил объяснений?
или задавал какие-то вопросы?
Название: resize картинки
Отправлено: Dasha от 19 Января 2005, 22:14:31
Ок, я прошу.
ЧТО НЕ ТАК в функции которую я прислала ?
Объясни пожалуйста - в чем ошибки ?
Название: resize картинки
Отправлено: Меняздесьдавнонет от 19 Января 2005, 22:29:01
ошибок нет.
просто расчеты можно было бы сделать пооптимальнее
Название: resize картинки
Отправлено: Dasha от 19 Января 2005, 22:33:33
Можно, ты прав.
Просто было написано в спешке, с тех пор руки не доходили поменять.
Я что, чтобы похвастаться этой ерундой написала ? Ну было под рукой, я сбросила...
Ну вот чего ты такой злой, а ? ))

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

Ты со всеми так или это не меня взъелся ?
Название: resize картинки
Отправлено: Меняздесьдавнонет от 19 Января 2005, 22:45:42
Цитировать
Dasha:
Я что, чтобы похвастаться этой ерундой написала

ну, не знаю.
не вижу других причин постить ответ почти через месяц после вопроса.
Название: resize картинки
Отправлено: Dasha от 19 Января 2005, 23:53:32
Ой, я на дату не посмотрела...
простите, мне стыдно и я лучше буду такие темы молча читать, а спрашивать только по необходимости