помогите нужно сделать вывод изображений
сначала миниатюра а потом большой размер
как здесь http://vkontakte.ru/album-8978_127499238
Или есть уже похожие уроки)
Заранее спасибо
Спустя 5 минут, 32 секунды (31.03.2011 - 12:28) T1grOK написал(а):
А наработки, идеи какие-нибудь есть? С нуля писать думаю никто не захочет, а подсказать другое дело.
Спустя 1 минута, 52 секунды (31.03.2011 - 12:30) Bossmen написал(а):
<?php
$filename = 'images/123.jpg';
$percent = 0.9;
header('Content-type: image/jpeg');
list($width, $height) = getimagesize($filename);
$width = $width / 2;
$height = $height / 2;
$new_width = "170";
$new_height = "128";
$image_p = imagecreatetruecolor(170, 128);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, null, 100);
?>
Спустя 33 секунды (31.03.2011 - 12:30) Bossmen написал(а):
она изображения растягивает по всему изображению
Спустя 58 секунд (31.03.2011 - 12:31) fallow написал(а):
учи JavaScript
А на php такие вещи получаются деревянными, т.к каждый раз придётся обращаться к серверу, а это полная перезагрузка страницы.
А на php такие вещи получаются деревянными, т.к каждый раз придётся обращаться к серверу, а это полная перезагрузка страницы.
Спустя 4 минуты, 4 секунды (31.03.2011 - 12:35) sharki написал(а):
// функция уменьшения изображения превью.
function resizeimg($big, $small, $width, $height,$putch) {
// $putch - путь до загруженного изображения
// $big - название большого изображения
// $small - будущее название маленького изображение, которое будет находится в той же папке где и большое,
// или можно изменить путь вот тут вручную $small = "/min_img/".$small;
// $width, $height ширина и высота превьюшки ( размеры делаются пропорционально не меняя качества)
// имя файла с маштабируемым изображением
$big = $putch.$big;
// имя файла с уменьшенной копией
$small = $putch.$small;
//определиям коэфицент сжатия генерируемого изображения
$ratio = $width/$height;
// получаем размеры исходного изображения
$size_img = getimagesize($big);
list($width_src, $height_src) = getimagesize($big);
// если размеры меньше, то маштабирование не нужно
if(($width_src<$width) && ($height_src<$height)) {
copy($big, $small);
return true;
}
// получаем коэфицент сжатия исходного изображения
$src_ratio = $width_src/$height_src;
// вычисляем размеры уменьшенной копии, чтобы при мащтабировании сохранились пропорции исходного изображения
if ($ratio<$src_ratio) {
$height = $width/$src_ratio;
}
else {
$width = $height*$src_ratio;
}
// создаем пустое изображение п заданным размерам
$dest_img = imagecreatetruecolor($width,$height);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2] == 2) $src_img = imagecreatefromjpeg($big);
else if ($size_img[2] == 1) $src_img = imagecreatefromgif($big);
else if ($size_img[2] == 3) $src_img = imagecreatefrompng($big);
// маштабируем изображение функцией imagecopysapled()
// $dest_img - уменьшенная копия
// $src_img - исходное изображение
// $width - ширина уменьшенной копии
// $height - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $srze_img[1] - высота исходного изображения
imagecopyresampled($dest_img,
$src_img,
0,
0,
0,
0,
$width,
$height,
$width_src,
$height_src);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img,$small);
else if ($size_img[2]==1) imagegif($dest_img,$small);
else if ($size_img[2]==3) imagepng($dest_img,$small);
// очищаем память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
Спустя 7 минут, 27 секунд (31.03.2011 - 12:43) Bossmen написал(а):
sharki
http://vkontakte.ru/album-8891200_101495135 она будет также работать?
http://vkontakte.ru/album-8891200_101495135 она будет также работать?
Спустя 2 минуты, 1 секунда (31.03.2011 - 12:45) sharki написал(а):
Bossmen
Эта функция ресайзит пропорциональные изображения, а там дальше что хош с ними делай, по идее тебе надо будет закачать изображение, перудать этой функции, она отресайзит, получить все имена и занести их в БД, а потом оттуда уже выводить циклом и в таблицу или дивами.
Эта функция ресайзит пропорциональные изображения, а там дальше что хош с ними делай, по идее тебе надо будет закачать изображение, перудать этой функции, она отресайзит, получить все имена и занести их в БД, а потом оттуда уже выводить циклом и в таблицу или дивами.
Спустя 7 минут, 15 секунд (31.03.2011 - 12:52) Bossmen написал(а):
так мне нужно чтобы одно изображение было
а по get параметрам изменяется размер если get1024 то изображения 1024х768
а по get параметрам изменяется размер если get1024 то изображения 1024х768
Спустя 7 минут, 18 секунд (31.03.2011 - 13:00) sharki написал(а):
Ну а в чем проблема? передавай GET'ом в файл обработчик он передает те самые ширину и высоту и эта функции ресайзит и выдает тебе изображение.
надо будет только сделать чуть по другому, вот это
Заменить на
Т.е этот файл и будет картинкой и использовать надо будет так
Ну а как передать GET параметры надеюсь разберешься
надо будет только сделать чуть по другому, вот это
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img,$small);
else if ($size_img[2]==1) imagegif($dest_img,$small);
else if ($size_img[2]==3) imagepng($dest_img,$small);
// очищаем память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
Заменить на
// Создаем картинку
if ($size_img[2]==2) {
imagejpeg($dest_img);
header("Content-Type: image/jpeg");
}
else if ($size_img[2]==1) {
imagegif($dest_img);
header("Content-Type: image/gif");
}
else if ($size_img[2]==3) {
imagepng($dest_img);
header("Content-Type: image/png");
}
// очищаем память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
Т.е этот файл и будет картинкой и использовать надо будет так
<img src ="image.php?w=1024&h=768" />
Ну а как передать GET параметры надеюсь разберешься
Спустя 16 минут, 27 секунд (31.03.2011 - 13:16) Bossmen написал(а):
Warning: imagejpeg() expects parameter 1 to be resource, null given in Z:\home\bodyofproof\www\123.php on line 44
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\bodyofproof\www\123.php:44) in Z:\home\bodyofproof\www\123.php on line 45
Warning: imagedestroy() expects parameter 1 to be resource, null given in Z:\home\bodyofproof\www\123.php on line 49
Warning: imagedestroy() expects parameter 1 to be resource, null given in Z:\home\bodyofproof\www\123.php on line 50
Ошибки выдает
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\bodyofproof\www\123.php:44) in Z:\home\bodyofproof\www\123.php on line 45
Warning: imagedestroy() expects parameter 1 to be resource, null given in Z:\home\bodyofproof\www\123.php on line 49
Warning: imagedestroy() expects parameter 1 to be resource, null given in Z:\home\bodyofproof\www\123.php on line 50
Ошибки выдает
Спустя 56 секунд (31.03.2011 - 13:17) sharki написал(а):
Bossmen
А ты все параметры передал?в функцию? и правильно ли пути указал?
А ты все параметры передал?в функцию? и правильно ли пути указал?
Спустя 1 минута, 5 секунд (31.03.2011 - 13:18) Bossmen написал(а):
вот мой скрипт
<?php
// функция уменьшения изображения превью.
function resizeimg($big, $small, $width, $height,$putch) {
// $putch - путь до загруженного изображения
// $big - название большого изображения
// $small - будущее название маленького изображение, которое будет находится в той же папке где и большое,
// или можно изменить путь вот тут вручную $small = "/min_img/".$small;
// $width, $height ширина и высота превьюшки ( размеры делаются пропорционально не меняя качества)
// имя файла с маштабируемым изображением
$big = $putch.$big;
// имя файла с уменьшенной копией
$small = $putch.$small;
//определиям коэфицент сжатия генерируемого изображения
$ratio = $width/$height;
// получаем размеры исходного изображения
$size_img = getimagesize($big);
list($width_src, $height_src) = getimagesize($big);
// если размеры меньше, то маштабирование не нужно
if(($width_src<$width) && ($height_src<$height)) {
copy($big, $small);
return true;
}
// получаем коэфицент сжатия исходного изображения
$src_ratio = $width_src/$height_src;
// вычисляем размеры уменьшенной копии, чтобы при мащтабировании сохранились пропорции исходного изображения
if ($ratio<$src_ratio) {
$height = $width/$src_ratio;
}
else {
$width = $height*$src_ratio;
}
if ($size_img[2]==2) {
imagejpeg($dest_img);
header("Content-Type: image/jpeg");
}
// очищаем память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
$big= "images/123.jpg";
$width ="120";
$height ="120";
resizeimg($big, $small, $width, $height,$putch)
?>
Спустя 6 минут, 1 секунда (31.03.2011 - 13:24) sharki написал(а):
эм, ты сам то понял что сделал?
Зачем ты вырезал кусок кода? и т.д и т.п
Еще раз и по порядку, сначало попробуй сделать всё по дефоулту, берешь мой скрипт, подставляешь ВСЕ значения, и смотришь что получилось, потом заменяешь кусок скрипта на другой, где с header....... в конце, и передаешь ВСЕ параметры все 5 ! смотришь что получилось, если удовлетворяет и всё сделано правильно, будем убирать лишнее.
Зачем ты вырезал кусок кода? и т.д и т.п
imagecopyresampled($dest_img,
$src_img,
0,
0,
0,
0,
$width,
$height,
$width_src,
$height_src);
Еще раз и по порядку, сначало попробуй сделать всё по дефоулту, берешь мой скрипт, подставляешь ВСЕ значения, и смотришь что получилось, потом заменяешь кусок скрипта на другой, где с header....... в конце, и передаешь ВСЕ параметры все 5 ! смотришь что получилось, если удовлетворяет и всё сделано правильно, будем убирать лишнее.
Спустя 17 минут, 42 секунды (31.03.2011 - 13:42) Bossmen написал(а):
Отдуши помог))
То с это тех механикой на учебе, мозги сегодня не варят)))
Большое спасибо!!!!
То с это тех механикой на учебе, мозги сегодня не варят)))
Большое спасибо!!!!
Спустя 34 минуты, 20 секунд (31.03.2011 - 14:16) sharki написал(а):
Пожалуйста)
Спустя 50 минут, 49 секунд (31.03.2011 - 15:07) Bossmen написал(а):
А как в цикле сделать?
Спустя 5 минут, 20 секунд (31.03.2011 - 15:12) sharki написал(а):
Что в цикле? поподробнее
Спустя 1 минута, 8 секунд (31.03.2011 - 15:13) Bossmen написал(а):
я из базы фотки беру
и их нужно в цикл
я функцию в цикл запехнул не пашет
и их нужно в цикл
я функцию в цикл запехнул не пашет
Спустя 2 минуты, 9 секунд (31.03.2011 - 15:15) sharki написал(а):
покажи что ты сделал =) исправим
Спустя 8 минут, 38 секунд (31.03.2011 - 15:24) Bossmen написал(а):
<?php
include './settings/db.php';
ob_start();
function resizeimg($big) {
$putch = "./images/";
$width ="120";
$height ="120";
// $putch - путь до загруженного изображения
// $big - название большого изображения
// $small - будущее название маленького изображение, которое будет находится в той же папке где и большое,
// или можно изменить путь вот тут вручную $small = "/min_img/".$small;
// $width, $height ширина и высота превьюшки ( размеры делаются пропорционально не меняя качества)
// имя файла с маштабируемым изображением
$big = $putch.$big;
// имя файла с уменьшенной копией
$small = $putch.$small;
//определиям коэфицент сжатия генерируемого изображения
$ratio = $width/$height;
// получаем размеры исходного изображения
$size_img = getimagesize($big);
list($width_src, $height_src) = getimagesize($big);
// если размеры меньше, то маштабирование не нужно
if(($width_src<$width) && ($height_src<$height)) {
copy($big, $small);
return true;
}
// получаем коэфицент сжатия исходного изображения
$src_ratio = $width_src/$height_src;
// вычисляем размеры уменьшенной копии, чтобы при мащтабировании сохранились пропорции исходного изображения
if ($ratio<$src_ratio) {
$height = $width/$src_ratio;
}
else {
$width = $height*$src_ratio;
}
// создаем пустое изображение п заданным размерам
$dest_img = imagecreatetruecolor($width,$height);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2] == 2) $src_img = imagecreatefromjpeg($big);
else if ($size_img[2] == 1) $src_img = imagecreatefromgif($big);
else if ($size_img[2] == 3) $src_img = imagecreatefrompng($big);
// маштабируем изображение функцией imagecopysapled()
// $dest_img - уменьшенная копия
// $src_img - исходное изображение
// $width - ширина уменьшенной копии
// $height - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $srze_img[1] - высота исходного изображения
imagecopyresampled($dest_img,
$src_img,
0,
0,
0,
0,
$width,
$height,
$width_src,
$height_src);
if ($size_img[2]==2) {
imagejpeg($dest_img);
header("Content-Type: image/jpeg");
}
else if ($size_img[2]==1) {
imagegif($dest_img);
header("Content-Type: image/gif");
}
else if ($size_img[2]==3) {
imagepng($dest_img);
header("Content-Type: image/png");
}
// очищаем память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
$query = "SELECT * FROM tabl_picture ORDER BY id_picture DESC";
$result = mysql_query($query);
while($myrow = mysql_fetch_assoc($result)){
resizeimg($myrow['image']);
}
Спустя 20 минут, 49 секунд (31.03.2011 - 15:45) sharki написал(а):
Ну правильно, по идее он тебе должен выдать только одно изображение, последнее.
Вот смотри ты resizeimg($myrow['image']); много раз проходишь по этой функцией, а ведь она щас у тебя разовая, приняла изображение -> отдала в виде изображения 1 раз в этом же файле, ты опять её вызываешь она забыла про предыдущею и создала еще одно и т.д...
В твоем случае нужно создать превьюшки(т.е именно создать и сохранить в бд и в папку mini_jpg, а большие в big_jpg) например на по 150px и вывести их все на одной странице, потом пользователь щелкает на фотку с ссылкой и get параметрами, открывает файл обработчик где он всё это принял. а динамически у тебя так не получится их выводить... хотя щас кто нить и придумает, может быть
Вот смотри ты resizeimg($myrow['image']); много раз проходишь по этой функцией, а ведь она щас у тебя разовая, приняла изображение -> отдала в виде изображения 1 раз в этом же файле, ты опять её вызываешь она забыла про предыдущею и создала еще одно и т.д...
В твоем случае нужно создать превьюшки(т.е именно создать и сохранить в бд и в папку mini_jpg, а большие в big_jpg) например на по 150px и вывести их все на одной странице, потом пользователь щелкает на фотку с ссылкой и get параметрами, открывает файл обработчик где он всё это принял. а динамически у тебя так не получится их выводить... хотя щас кто нить и придумает, может быть
Спустя 6 минут, 12 секунд (31.03.2011 - 15:51) sharki написал(а):
А так, ты на главной странице где всё этот ы предоставляешь делаешь
$query = "SELECT * FROM tabl_picture ORDER BY id_picture DESC";
$result = mysql_query($query);
echo '<div style="width: 1000px; heigth: 1000px">';
while($myrow = mysql_fetch_assoc($result)){
echo '<div style="float:left; width: 150px; heigth: 150px;"><a href="bla.php?w=234&h=55&id=3"> <img src ="' . $myrow['min_image'] . '"></a></div>';
}
echo '</div>';
Спустя 10 минут, 14 секунд (31.03.2011 - 16:01) Bossmen написал(а):
Вот так пробую
<?php
include './settings/db.php';
ob_start();
function resizeimg() {
$putch = "./images/";
$width ="120";
$height ="120";
$query = "SELECT * FROM tabl_picture ORDER BY id_picture DESC";
$result = mysql_query($query);
while($myrow = mysql_fetch_assoc($result)){
$im[] = $myrow;
}
$count = count($im);
// $putch - путь до загруженного изображения
// $big - название большого изображения
// $small - будущее название маленького изображение, которое будет находится в той же папке где и большое,
// или можно изменить путь вот тут вручную $small = "/min_img/".$small;
// $width, $height ширина и высота превьюшки ( размеры делаются пропорционально не меняя качества)
for ($x=0;$x<$count;$x++):
// имя файла с маштабируемым изображением
$big = $putch.$im[$x]['image'];
//определиям коэфицент сжатия генерируемого изображения
$ratio = $width/$height;
// получаем размеры исходного изображения
$size_img = getimagesize($big);
list($width_src, $height_src) = getimagesize($big);
// если размеры меньше, то маштабирование не нужно
if(($width_src<$width) && ($height_src<$height)) {
copy($big, $small);
return true;
}
// получаем коэфицент сжатия исходного изображения
$src_ratio = $width_src/$height_src;
// вычисляем размеры уменьшенной копии, чтобы при мащтабировании сохранились пропорции исходного изображения
if ($ratio<$src_ratio) {
$height = $width/$src_ratio;
}
else {
$width = $height*$src_ratio;
}
// создаем пустое изображение п заданным размерам
$dest_img = imagecreatetruecolor($width,$height);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2] == 2) $src_img = imagecreatefromjpeg($big);
else if ($size_img[2] == 1) $src_img = imagecreatefromgif($big);
else if ($size_img[2] == 3) $src_img = imagecreatefrompng($big);
// маштабируем изображение функцией imagecopysapled()
// $dest_img - уменьшенная копия
// $src_img - исходное изображение
// $width - ширина уменьшенной копии
// $height - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $srze_img[1] - высота исходного изображения
imagecopyresampled($dest_img,
$src_img,
0,
0,
0,
0,
$width,
$height,
$width_src,
$height_src);
if ($size_img[2]==2) {
imagejpeg($dest_img);
header("Content-Type: image/jpeg");
}
endfor;
}
resizeimg();
Спустя 9 минут, 33 секунды (31.03.2011 - 16:11) sharki написал(а):
Bossmen
Зачем тебе это? он у тебя будет выполняться наверное долго. Возьми мой самый первый скрипт где он сохраняет превьюшки в папку и там же добавляй названия будущих превьюшек в БД и оригиналы, а потом ты тупо их выводишь циклом из БД подхватывая изображения из папок, передавая в ссылки id большого изображения, чтобы потом один раз его вызвать и отресайзить пользователю.
Зачем тебе это? он у тебя будет выполняться наверное долго. Возьми мой самый первый скрипт где он сохраняет превьюшки в папку и там же добавляй названия будущих превьюшек в БД и оригиналы, а потом ты тупо их выводишь циклом из БД подхватывая изображения из папок, передавая в ссылки id большого изображения, чтобы потом один раз его вызвать и отресайзить пользователю.
Спустя 4 минуты, 28 секунд (31.03.2011 - 16:15) Bossmen написал(а):
А как сделать загрузку на севр. изображений?
а ты думаешь в вк тоже все мини изображения хроняться отдельно?
а ты думаешь в вк тоже все мини изображения хроняться отдельно?
Спустя 55 секунд (31.03.2011 - 16:16) sharki написал(а):
Конечно
А ты возьми мой первоначальный скрипт, подставь все значения и глянь куда он сохранит и как это выглядит
А ты возьми мой первоначальный скрипт, подставь все значения и глянь куда он сохранит и как это выглядит
Спустя 2 минуты, 35 секунд (31.03.2011 - 16:19) Bossmen написал(а):
Наверно так и сделаю))
надо будет создать две папки мини и большие изображения ?
надо будет создать две папки мини и большие изображения ?
Спустя 1 минута, 19 секунд (31.03.2011 - 16:20) Bossmen написал(а):
а как все граммотно сделать добавку в базу?
Спустя 47 секунд (31.03.2011 - 16:21) sharki написал(а):
да, и лучше чтобы названия были одинаковые, что у большого, что и у маленького, так ты просто где надо подставляешь название папки и и он выводит нужное тебе изображение.
UPDATE
А ты сначала сделай так, чтобы ты контролировал названия превьюшек, и их месторасположение, а потом уже будешь добавлять их названия в БД, в итоге в БД у тебя одно поле img, где лежит название обоих изображений, только раскиданных по разным папкам.
UPDATE
А ты сначала сделай так, чтобы ты контролировал названия превьюшек, и их месторасположение, а потом уже будешь добавлять их названия в БД, в итоге в БД у тебя одно поле img, где лежит название обоих изображений, только раскиданных по разным папкам.