уменьшить размер рисунка до передачи браузеру

mak_sim2001

Новичок
уменьшить размер рисунка до передачи браузеру

Много чего в поиске нашел, может не доглядел чего, но вот проблема.
библиотека GD на сервере отсутствует
Русунок хранится в двоичном виде в базе данных (не я так придумал) выводится через фаил
--- img.php---
<?php
header('Content-type: image/jpeg');
require_once('db_conn.php');
require_once('functions.php');
$sql = 'SELECT Event_image FROM event WHERE Event_id='.$_GET['id'];
$row = runQuery($sql);
echo base64_decode($row[0]['Event_image']);
//echo base64_decode($details[$focus_index]['Event_image']);
?>

например где-то в другом скрипте

<?php
print '<img src="img.php?id='.$result['Event_id'].'" width = "150px" /><br />';
?>
естно при таком варианте он грузится юзеру целиком =( а хотелось бы грузить что-то поменьше
Есть свое решение но что-то оно мне не очень, создаю файл с разширением .jpg, и его уже уменьшаю(короче полный бред хоть и работает) вообще класс использовал на локале для работы с изображениями но без библиотеки GD он не пашет =(
 

mak_sim2001

Новичок
function resizeImage($imagename, $target) {

# ENSURE PATH & FILE EXIST
if (!file_exists($imagename)) {
return NULL;
}

$img = getimagesize($imagename);
$width = $img[0];
$height = $img[1];

if ($width > $height) {
$percentage = ($target / $width);
}
else {
$percentage = ($target / $height);
}

$width = round($width * $percentage);
$height = round($height * $percentage);

return "width='$width' height='$height'";
}
Вообще на remout еще не пробывал но в мануале php написано что getimagesize() не требует библиотеки GD

-~{}~ 28.11.06 02:02:

Блин понял помоему бред пишу, что-то я гоню

-~{}~ 28.11.06 02:03:

Никак нельзя уменьшить???

-~{}~ 28.11.06 02:27:

Да, ответ уже знаю, сам себя запутал.
Млин а зделать то что у меня получилось только более простым способом можно(мож какято функция есть все таки, заголовок чем-то отпарсить?...и есть ли он этот что парсить надо) что-бы width и height получить
 

Фанат

oncle terrible
Команда форума
зайчик.
перед тем, как искать какую-то функцию или заголовок, сначала надо рассказать словами, что она должна делать.
Код, который ты здесь написал, не имеет ничего общего с уменьшением размера рисунка. Поэтому соберись с силами, и попробуй рассказать - какая конкретно функция тебе нужна, и что она должна делать?

Только не пугай меня, и не говори, что тебе нужна функция, которая вывдит на экран строку
width=150
 

mak_sim2001

Новичок
Глобально проблема стоит уменьшать размер рисунка на сервере, до того как он выведется в браузер как я понял без библиотеки gd это сделать нельзя(если я ошибаюсь дай ссылку где об этом можно почитать).
Тогда хотелось бы получить значение height и width рисунка что-бы пропорционально его уменьшить т.е. он был например width < 150 и height < 120. Сейчас я эти размеры получаю применив функцию getimagesize() к файлу который я создаю

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


но как я думаю с таким подходом я буду сильног грузить сервер, есть ли другое более рациональное решение?
Если есть подскажи
 

Фанат

oncle terrible
Команда форума
как я понял без библиотеки gd это сделать нельзя
можно, конечно. какой-нибудь другой библиотекой. только я очень сомневаюсь, что если на сервере нету даже GD, то там окажется любая другая.
если я ошибаюсь дай ссылку где об этом можно почитать
"дай" говорят калеки в переходе. Но ты же не калека? Руки на месте? www.google.com и там "уменьшить изображение" набрать можешь? Ну так там тебе дадут сто ссылок - хоть обчитайся.
Сейчас я эти размеры получаю применив функцию getimagesize() к файлу который я создаю
молодец. так и продолжай.
Есть свое решение но что-то оно мне не очень, создаю файл с разширением .jpg, и его уже уменьшаю
как я раньше не понимал, так и до сих пор не понимаю.
То ты говоришь, что уменьшить нельзя, то вдруг снова пишешь, что ты файл уменьшаешь. Ты можешь определиться, наконец, с чем-то одним?
 

AlexBB

Новичок
Я не очень понял, что за решение Вы используете и как оно может работать ... даже грузя сервер.
Подозреваю, что оно все-таки не уменьшает картинку, а просто пересчитывает пропорции и формирует тег <img>. Так? Как уже было сказано, к уменьшению картинки это никакого отношения не имеет.

Теперь резюме.
Без GD или аналогичной библиотеки у Вас ничего не получится.
Теоритически конечно, можно написать функцию изменения размеров JPG на PHP. Листинг ее займет не одну страницу. И будет она мягко говоря не быстрая. Готовую Вы врядли найдете, так как таким идиотизмом при наличии GD никто скорее всего не занимался.
 

mak_sim2001

Новичок
как я раньше не понимал, так и до сих пор не понимаю.
То ты говоришь, что уменьшить нельзя, то вдруг снова пишешь, что ты файл уменьшаешь. Ты можешь определиться, наконец, с чем-то одним? [/QUOTE]
Это я себя процитировал :)

А по поводу молодец так и продолжай,
у меня получается картинки выводятся на странице поиска, я боюсь что если я для 10 картинок буду создавать файлы, то мало того что будет долго грузится из-за размера рисунков, так еще сервер будет долго запрос обрабатывать, или я зря боюсь?
 

Фанат

oncle terrible
Команда форума
нет, не зря боишься.
если речь идёт не об определении размеров, а о том, чтобы выковыривать из базы 10 здоровенных картинок, а потом их все показывать браузеру - тебя на шашлык пустит и хостер и посетители.

А вообще, я за то, чтобы запретить все эти хитровыдуманные вопросы.
"Мне ничего нельзя, я ничего не знаю и не умею, но мне надо обязательно сделать!"
Блин, почему на строительных форумах не спрашивают: "Нет кирпича и бетона, и строителей тоже нет. Надо построить небоскреб. подскажите, как!".

ИЛИ МЕНЯЙ УСЛОВИЯ СВОЕЙ ЗАДАЧКИ, или не берись за неё вовсе!

картинки у него в базе, и менять это нельзя
GD у него нету, и поставить нельзя!
А чего у тебя ещё нету?!
Давай ты еще напишешь, что у сервера нет подключения к интернету, жесткого диска и красивой наклейки на корпусе.
А мы тут все вместе будем думать - как картинки показывать!
 

mak_sim2001

Новичок
Да я бы поменял, и сейчас с этим как раз борюсь, либо хостер должен библиотеку подключать, либо картинки из базы данных надо убирать, а луче и то и другое.
Я же не то что хочу хитросделаный олимпиадный вопрос задать типа у меня ниче нет и как получить все, слабо решить? просто в php не давно и небыло уверенности что на самом деле нет простого пути а я изобретаю велосипед.
Спасибо за ответы, Мне это действительно помогло.
P.S.
Решение уже подсказано надо менять условие!!!
 

Фанат

oncle terrible
Команда форума
есть, кстати, еще вариант.
скачать все картинки с сервака себе на домашний комп, на нем уменьшить, и залить обратно.
очень простое решение.
И как я сразу не додумался?
 

mak_sim2001

Новичок
Да, и когда их юзеры будут добовлять новые повторять эту операцию, и зачем вообще это пхп, пусть рисунки мылом высылают =)
Просто Фанат у тебя всетаки большой опыт работы в пхп (7лет не шутка, заслуживает уважения) и ты сразу пытаешься решить все средствами пхп, кода можно по простому на сайте указать email для картинок, и потом их рассартировать =)

Тему наверно можно считать закрытой
Фанат, тебе действительно спасибо
 
Сверху