Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужна помощь. Проблемы с картинками
 
 автор: vito57   (26.10.2009 в 23:17)   письмо автору
 
 

НУЖНА ПОМОЩЬ php программиста
есть пхп скрипт который превращает большую картинку в миниатюру(превьюшку),
как сделать так чтоб можно было делать миниатюры из нескольких картинок сразу? Засовывал в массив выдает ошибки. Всего картинок 10, мож функция какая нужна? ХЕЛП.


ini_set("display_errors", "1");
error_reporting(E_ALL);

$img_src = 'bw.jpg'; //путь к картинке

$width = 125;

$thumb = 'bw_thumbnail.jpg'; //миниатюра


if(file_exists($img_src)){

$image = imagecreatefromjpeg($img_src);


list($image_width, $image_height) = getimagesize($img_src);


$height = (($width / $image_width) * $image_height);


$tmp_img = imagecreatetruecolor($width, $height);
imagecopyresampled($tmp_img, $image, 0, 0, 0, 0, $width, $height, $image_width, $image_height);


if(is_writeable(dirname($thumb))){
imagejpeg($tmp_img, $thumb, 100);
echo 'Сохранено ' , $thumb;
}
else {
echo 'Не сохранено';
}


imagedestroy($tmp_img);
imagedestroy($image);
}
else {
echo 'File not found!';
}

  Ответить  
 
 автор: Yuriev   (27.10.2009 в 00:50)   письмо автору
 
   для: vito57   (26.10.2009 в 23:17)
 

Делаешь новую БОЛЬШУЮ картинку
Начало повторения
Из очередной картинки делаешь превью
Вставляешь её в БОЛЬШУЮ с нужными координатами
Конец повторения

  Ответить  
 
 автор: vidok   (27.10.2009 в 09:02)   письмо автору
 
   для: vito57   (26.10.2009 в 23:17)
 

Основываясь на Вашем коде можно сделать так:
ini_set("display_errors", "1");
error_reporting(E_ALL);
$images = array(1=>array('большая', 'маленькая'))
$n = count($images);

for ($i = 0; $i < $n; $i++)
    resizeImg($images[$i][1], $images[$i][2]);
  

function resizeImg($src, $dest, $width = 125)
{

$img_src = $src;

$thumb = $dest

if(file_exists($img_src)){
$image = imagecreatefromjpeg($img_src);
list($image_width, $image_height) = getimagesize($img_src);
$height = (($width / $image_width) * $image_height);
$tmp_img = imagecreatetruecolor($width, $height);
imagecopyresampled($tmp_img, $image, 0, 0, 0, 0, $width, $height, $image_width, $image_height);


if(is_writeable(dirname($thumb)))
{
    imagejpeg($tmp_img, $thumb, 100);
    echo 'Сохранено ' , $thumb;
}
else 
   echo 'Не сохранено';

imagedestroy($tmp_img);
imagedestroy($image);
}
else 
{
echo 'File not found!';
}

  Ответить  
 
 автор: vito57   (27.10.2009 в 13:31)   письмо автору
 
   для: vidok   (27.10.2009 в 09:02)
 

Parse error: syntax error, unexpected T_VARIABLE in Z:\home\localhost\www\gal\t.php on line 5

Выдает ошибку. Что делать?

  Ответить  
 
 автор: Mirage   (27.10.2009 в 13:59)   письмо автору
 
   для: vito57   (27.10.2009 в 13:31)
 

Точку с запятой забыли в строке $images = array(1=>array('большая', 'маленькая')) ;

  Ответить  
 
 автор: vito57   (27.10.2009 в 15:42)   письмо автору
 
   для: Mirage   (27.10.2009 в 13:59)
 

Я далеко не профи в пхп.
array(1 так задавать массив это верно?


Parse error: syntax error, unexpected T_IF in Z:\home\localhost\www\gal\t.php on line 18
выдает ошибку.

  Ответить  
 
 автор: Trianon   (27.10.2009 в 15:49)   письмо автору
 
   для: vito57   (27.10.2009 в 15:42)
 

чтобы расставить точки-с-запятой после операторов вида $a=$b; профи быть не нужно.
Нужно лишь быть знакомым с языком на самом элементарном уровне.

array(5 => 20) означает массив из одного элемента с индексом 5 и значением 20.

  Ответить  
 
 автор: vito57   (27.10.2009 в 15:55)   письмо автору
 
   для: Trianon   (27.10.2009 в 15:49)
 

Parse error: syntax error, unexpected $end in Z:\home\localhost\www\gal\t.php on line 41


А ЭТО ЧТО?

  Ответить  
 
 автор: Trianon   (27.10.2009 в 16:00)   письмо автору
 
   для: vito57   (27.10.2009 в 15:55)
 

обычно такое пишут , когда закрыты не все открытые скобки. Фигурные, как правило

  Ответить  
 
 автор: vito57   (27.10.2009 в 16:13)   письмо автору
 
   для: Trianon   (27.10.2009 в 16:00)
 

Понимаю что всех уже достал. Но все же.
Вот что я имею
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
$images = array(1=>array('bw.jpg', 'sd.jpg')) ;
$n = count($images);


for ($i = 0; $i < $n; $i++)
resizeImg($images[$i][1], $images[$i][2]);


function resizeImg($src, $dest, $width = 125)
{
$img_src = $src;

$thumb = $dest ;

if(file_exists($img_src)){
$image = imagecreatefromjpeg($img_src);
list($image_width, $image_height) = getimagesize($img_src);
$height = (($width / $image_width) * $image_height);
$tmp_img = imagecreatetruecolor($width, $height);
imagecopyresampled($tmp_img, $image, 0, 0, 0, 0, $width, $height, $image_width, $image_height);
}

if(is_writeable(dirname($thumb)))
{
imagejpeg($tmp_img, $thumb, 100);
echo 'Save' , $thumb;
}
else {
echo 'not Save';

imagedestroy($tmp_img);
imagedestroy($image);
}
}
?>

Выдает



Notice: Undefined offset: 0 in Z:\home\localhost\www\gal\t.php on line 9
[ убрать подсказку | никогда больше не показывать ]

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

* Впишите в скрипты строчку:

Error_Reporting(E_ALL & ~E_NOTICE);

Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
* Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:

php_value error_reporting 7

* Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

[Денвер: показать возможную причину ошибки]
Notice: Undefined offset: 0 in Z:\home\localhost\www\gal\t.php on line 9
Не сохранено
Notice: Undefined variable: tmp_img in Z:\home\localhost\www\gal\t.php on line 34

Warning: imagedestroy(): supplied argument is not a valid Image resource in Z:\home\localhost\www\gal\t.php on line 34

Notice: Undefined variable: image in Z:\home\localhost\www\gal\t.php on line 35

Warning: imagedestroy(): supplied argument is not a valid Image resource in Z:\home\localhost\www\gal\t.php on line 35

  Ответить  
 
 автор: vito57   (27.10.2009 в 16:22)   письмо автору
 
   для: vito57   (27.10.2009 в 16:13)
 

Вот так получилось создать превьюшки

 <?
$width 
125;
        
$array = array('bw.jpg''sd.jpg');
foreach (
$array as $img_src)
{
if(
file_exists($img_src)){
$thumb str_replace('.''_thumbnail.'$img_src);

$image imagecreatefromjpeg($img_src);


list(
$image_width$image_height) = getimagesize($img_src);


$height = (($width $image_width) * $image_height);


$tmp_img imagecreatetruecolor($width$height);
imagecopyresampled($tmp_img$image0000$width$height$image_width$image_height);


if(
is_writeable(dirname($thumb))){
imagejpeg($tmp_img$thumb100);
} else {
//error

}


imagedestroy($tmp_img);
imagedestroy($image);
}
else {
//error
}

}   
?>

А как их вывести в броузер сразу после создания?
И возможно ли их выводить не сохраняя на диск?

  Ответить  
 
 автор: Trianon   (27.10.2009 в 16:30)   письмо автору
 
   для: vito57   (27.10.2009 в 16:22)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования