Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Масштабирование изображения
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): [1] 2 »   

> Описание: Проблема с палитрой
Aleksej
Отправлено: 07 Апреля, 2006 - 08:39:39
Post Id


Advanced Member


Покинул форум
Сообщений всего: 254
Дата рег-ции: Дек. 2004  

Карма 0




Задача следующая: на сервере есть графический файл. Мне нужно выдать картинку, подогнав ее размеры под заранее заданные. И так, решение следующее:
CODE:
$img = ImageCreateFromJpeg ($imgname);
$res = ImageCreate ($sketchwidth, $sketchheight);
ImageCopyResized ($res, $img, 0, 0, 0, 0, $sketchwidth, $sketchheight, ImageSX ($img), ImageSY ($img));
@header ("Content-type: image/jpeg");
ImageJpeg ($res);
ImageDestroy ($img);
ImageDestroy ($res);

Но в итоге картинка получается двухцветная (какая-то сине-голубая). Проблема в том, что для созданного приемника ($res) не определена палитра, а при копировании палитра не капируется (судя по результату).
И как же быть? Есть ли функция для того, что бы скопировать палитру с одного изображения на другое? Или может есть другое решение задачи?
Еще один вопрос: как изменить размеры холста? Если это удастся, то все операции можно будет провести на канве $img (а там-то палитра должна быть нормальной), а в итоге просто подогнать размеры.
 
 Top
Aleksej
Отправлено: 07 Апреля, 2006 - 11:08:32
Post Id


Advanced Member


Покинул форум
Сообщений всего: 254
Дата рег-ции: Дек. 2004  

Карма 0




Проблема решилась:
$res = ImageCreateTrueColor ($sketchwidth, $sketchheight);
 
 Top
TvoyWeb Администратор
Отправлено: 07 Апреля, 2006 - 16:06:00
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Я использую такой код (может пригодится)
CODE:
function create_tmb($bigimgsrc,$trumbalis){
$quality = 100;
$width = 148;
$height = 118;
$size = @getimagesize($bigimgsrc);

$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;
$x_gut = 0;
$y_gut = 0;
$x_proporcia = $size[0]/$width;
$y_proporcia = $size[1]/$height;
$actual_height = (($x_proporcia*$height) < $size[1]) ? $x_proporcia*$height : $size[1];
$actual_width = (($y_proporcia*$width) < $size[0]) ? $y_proporcia*$width : $size[0];

$bigimg = $icfunc($bigimgsrc);
$trumbcreate = imagecreatetruecolor($width, $height);

imagecopyresampled($trumbcreate, $bigimg, 0, 0, 0, 0, $width, $height, $actual_width, $actual_height);

imagejpeg($trumbcreate,$trumbalis,$quality);
flush();
imagedestroy($bigimg);
imagedestroy($trumbcreate);
return true;
}
 
 Top
Aleksej
Отправлено: 08 Апреля, 2006 - 05:28:27
Post Id


Advanced Member


Покинул форум
Сообщений всего: 254
Дата рег-ции: Дек. 2004  

Карма 0




TvoyWeb
Спасибо, кое-что из этого кода мне действительно пригодилось.
А что за функция такая: imagecopyresampled? Я использую ImageCopyResized и заметил, что приведенная тобой функция работает раз в 10 (!) медленнее, а эффект тот же самый Улыбка
 
 Top
ETC Администратор
Отправлено: 08 Апреля, 2006 - 06:29:12
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




resampled качественне во столько же раз.
 
 Top
Aleksej
Отправлено: 08 Апреля, 2006 - 07:55:00
Post Id


Advanced Member


Покинул форум
Сообщений всего: 254
Дата рег-ции: Дек. 2004  

Карма 0




ETC
Для маленького эскиза это непринципиально, а вот ждать по 2 сек. на каждый эскиз - не есть хорошо. Лучше ImageCopyResized, который это делает за 0.5 сек Подмигивание
 
 Top
TvoyWeb Администратор
Отправлено: 08 Апреля, 2006 - 10:18:21
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Aleksej пишет:
а вот ждать по 2 сек

Что-то я такого не замечал.
Aleksej пишет:
на каждый эскиз - не есть хорошо.

Не есть хорошо каждую превьюшку выводить на странице этой функцией. Лучше при аплоаде файлов делать копию превьюшки в отдельную папку и потом ее выводить обычным HTML'ем.
 
 Top
SviMik Супермодератор
Отправлено: 08 Апреля, 2006 - 10:21:27
Post Id



Где-то там...


Покинул форум
Сообщений всего: 3538
Дата рег-ции: Окт. 2004  
Откуда: Tallinn, Estonia

Карма 4




Aleksej пишет:
а вот ждать по 2 сек

А сервер наверняка P-2 266мгц. Я угадал?
 
 Top
Aleksej
Отправлено: 08 Апреля, 2006 - 11:21:56
Post Id


Advanced Member


Покинул форум
Сообщений всего: 254
Дата рег-ции: Дек. 2004  

Карма 0




Цитата:
А сервер наверняка P-2 266мгц. Я угадал?

Нет, сервер - мой комп (Celeron 1700 512 ram 160 Gb HDD Улыбка )

Еще пара вопросов:
1. Что делает функция flush()?
2. Как мне сохранить обработанное изображение на диск (на сервере)?
 
 Top
TvoyWeb Администратор
Отправлено: 08 Апреля, 2006 - 12:40:41
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Aleksej пишет:
Еще пара вопросов:
1. Что делает функция flush()?
2. Как мне сохранить обработанное изображение на диск (на сервере)?

flush сбрасывает на диск.
А сохранить.... функция которую я тебе привел как раз и сохраняет превьюшку в файл.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0461]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33