Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

16.06.2010, 02:38
|
|
Познающий
Регистрация: 28.01.2009
Сообщений: 32
Провел на форуме: 84089
Репутация:
1
|
|
roxblnfk, вы правы не подействовало, тогда как это можно реализовать?? А кстати сама функция правильно написана?? Или же, как выразились выше, говнокод??
|
|
|

16.06.2010, 02:53
|
|
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме: 217996
Репутация:
56
|
|
Axel G, в плане читабельности кода - по мне нормально.
Если нет стандартных функций для переноса картинки на картинку с учётом альфа-потока, то при необходимоси можно написать такую функцию вручную (работать, правда, будет медленно)
Для начала надо определиться, накладываемая кортинка будет SOLID или ALPHA (как GIF или PNG, проще говоря [у GIF нету полупрозрачных пикселей]).
Наложение SOLID картинки проще реализовать и работает быстрее (накладывать, используя маску).
принцип: разбить накладываемую картинку на массив (она не должна быть большой), дальше перебором массива наложить пиксели на большое изображение с учётом прозрачности, например по функции:
($C1+($C2-$C1)*$A)
$C1, $C2 - соответствующие цветовые потоки (r,g,b) картинок
$A- прозрачность пикселя первой картинки
Для реализации особых познаний не потребуется, имхо.
|
|
|

16.06.2010, 03:14
|
|
Познающий
Регистрация: 28.01.2009
Сообщений: 32
Провел на форуме: 84089
Репутация:
1
|
|
хмм, на производительности играть я не могу, нужен быстродействующий скрипт. А еще можете подсказать, как наложение лупы реализовать, меня imagedestroy($dst_img); особо беспокоит, это получается надо условия ставить в function createThumb иначе память будет освобождена, второй день уже мыкаюсь, а все безрезультатно.
PHP код:
if ($_POST['watermark_thumb'] == "2") { // лупа
}
а вот само наложение, подсобите советом, куда этот код надо вставлять, и что если надо дописать, а то запутался по коду уже = (
PHP код:
// Start Zoom
$image = imagecreatefrompng($dst_img); // превью
$watermark = imagecreatefrompng("theme/magnifying_glass.png"); // лупа
$ro=0; //отступ от правого края
$lo=0; //отступ сверху
$w = imagesx($image); //ширина картинки
$h = imagesy($image); //высота картинки
$ww = imagesx($watermark); //ширина лупы
$wh = imagesy($watermark); //высота лупы
imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh); // с наложением все понятно = )
header('Content-type: image/png'); // (отравка хттп-заголовка) имеет ли он смысл в моем коде??
imagepng($image); // вывод, все понятно, т.е. мне надо убрать imagepng и вместо imagecopy imagecopyresampled поставить, ведь так??
imagedestroy($image); // чистим память (превью)
imagedestroy($watermark); // чистим память (лупа)
// End Zoom
Исходник #Wolf#:
PHP код:
$image = imagecreatefrompng('http://ipicture.ru/uploads/100611/H51orxCq6S.png');//картинка
$watermark = imagecreatefrompng('http://ipicture.ru/uploads/100611/bSP3J7Q2Aj.png');//лупа
$ro=0;//отступ от правого края
$lo=0;//отступ сверху
$w = imagesx($image);//ширина картинки
$h = imagesy($image);//высота картинки
$ww = imagesx($watermark);//ширина лупы
$wh = imagesy($watermark);//высота лупы
imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh);//копируем
#####вывод#########
header('Content-type: image/png');
imagepng($image);
#####/вывод#########
imagedestroy($image);
imagedestroy($watermark);
Последний раз редактировалось Axel G; 16.06.2010 в 03:26..
|
|
|

16.06.2010, 03:44
|
|
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме: 217996
Репутация:
56
|
|
Если я правильно понял, то
PHP код:
if ($_POST['watermark_thumb'] == "2") { // лупа
$image = imagecreatefrompng($dst_img); // превью
$watermark = imagecreatefrompng("theme/magnifying_glass.png"); // лупа
$ro=0; //отступ от правого края
$lo=0; //отступ сверху
$w = imagesx($image); //ширина картинки
$h = imagesy($image); //высота картинки
$ww = imagesx($watermark); //ширина лупы
$wh = imagesy($watermark); //высота лупы
imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh); // с наложением все понятно = )
header('Content-type: image/png'); // (отравка хттп-заголовка) имеет ли он смысл в моем коде??
// имеет, если выводится картинка
imagepng($image); // вывод, все понятно, т.е. мне надо убрать imagepng и вместо imagecopy imagecopyresampled поставить, ведь так??
// эээ.. чё? :) зачем imagecopyresampled ? оно же для наложения с изменением размера
imagedestroy($image); // чистим память (превью)
imagedestroy($watermark); // чистим память (лупа)
}
если гуглить водяную марку php:
http://www.codenet.ru/webmast/php/watermark/
http://jeka911.wordpress.com/2007/09/25/3_ways_to_add_watermark_to_image_in_php/
в общем много разной инфы
насчёт говнокодинга в createThumb()
POST запросы в функции подобного рода впихивать вредно, а если и надо, то лучше не
$thumb_q = $_POST['quality_thumb'];
а что-то типа:
$thumb_q = isset($_POST['quality_thumb']) ? intval($_POST['quality_thumb']) : 60;
Так же в параметры функции лучше вписывать ссылку на ресурс картинки а не путь до неё и тип (тип из имени и так определить можно, зачем его функции сообщать?)
Тут немного не ясно, как связан x и y (высота зависит от x, а длина от y)? oO (ну и elseif нагляднее и правильнее)
if ($old_x > $old_y){
$thumb_w = $new_w;
$thumb_h = $old_y*($new_h/$old_x);
}
if ($old_x < $old_y){....
|
|
|

16.06.2010, 03:55
|
|
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме: 217996
Репутация:
56
|
|
говоришь при ресайце заливается чёрным? вроде норм всё
[upd]
PHP код:
$image = imagecreatefrompng('http://ipicture.ru/uploads/100611/H51orxCq6S.png');//картинка
$watermark = imagecreatefrompng('http://ipicture.ru/uploads/100611/bSP3J7Q2Aj.png');//лупа
$ro=70;//отступ от правого края
$lo=30;//отступ сверху
$new_w=40;//длина лупы
$new_h=20;//вфсота лупы
$w = imagesx($image);//ширина картинки
$h = imagesy($image);//высота картинки
$ww = imagesx($watermark);//ширина лупы
$wh = imagesy($watermark);//высота лупы
if ($ww > $wh){
$thumb_w = $new_w;
$thumb_h = $wh*($new_h/$ww);
}elseif($ww < $wh){
$thumb_w = $ww*($new_w/$wh);
$thumb_h = $new_h;
}elseif($ww == $wh){
$thumb_w = $new_w;
$thumb_h = $new_h;
}
imagecopyresampled($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $thumb_w, $thumb_h,$ww,$wh);//копируем
#####вывод#########
header('Content-type: image/png');
imagepng($image);
#####/вывод#########
imagedestroy($image);
imagedestroy($watermark);
Последний раз редактировалось roxblnfk; 16.06.2010 в 04:06..
|
|
|

16.06.2010, 10:22
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Есть 2 числа $a и $b, большое число это 100% ,нужно найти % меньшего числа в большем, как это можно сделать? И записать эти проценты в перемены $ap (% для $a) и $bp (% для $b)
|
|
|

16.06.2010, 10:43
|
|
Участник форума
Регистрация: 07.09.2008
Сообщений: 139
Провел на форуме: 351188
Репутация:
65
|
|
Сообщение от НTL
Есть 2 числа $a и $b, большое число это 100% ,нужно найти % меньшего числа в большем, как это можно сделать? И записать эти проценты в перемены $ap (% для $a) и $bp (% для $b)
Код:
if($a>$b)
{
$ap = 100;
$bp = ($b/$a)*100;
}else{
$ap = ($a/$b)*100;
$bp = 100;
}
как-то так походу
|
|
|

17.06.2010, 07:54
|
|
Новичок
Регистрация: 08.06.2010
Сообщений: 2
Провел на форуме: 12395
Репутация:
0
|
|
Всем привет, помогите с проблемой! Есть код
<html>
<head>
<title>First PHP script</title>
</head>
<body>
<?PHP
phpinfo();
echo "Hello";
?>
</body>
</html>
но по какой то причине он ничего не выдает на сервере, апач работает, ума не приложу в чем проблема? Вообще все что идет после тега <?php и до ?> не выводится на сервер, остается белая страница...И ещё вопрос как здесь на форуме выкладывать код чтобы он был как цитата, в рамке? Заранее спаибо!
Последний раз редактировалось FastFood; 17.06.2010 в 08:20..
|
|
|

17.06.2010, 09:24
|
|
Познающий
Регистрация: 03.01.2010
Сообщений: 42
Провел на форуме: 162143
Репутация:
3
|
|
Fastfood
1 расширение .php а не .html
2 [ php ] [/ php ]
|
|
|

17.06.2010, 10:41
|
|
Познающий
Регистрация: 26.05.2010
Сообщений: 48
Провел на форуме: 110887
Репутация:
19
|
|
Сообщение от FastFood
Всем привет, помогите с проблемой! Есть код
<html>
<head>
<title>First PHP script</title>
</head>
<body>
<?PHP
phpinfo();
echo "Hello";
?>
</body>
</html>
но по какой то причине он ничего не выдает на сервере, апач работает, ума не приложу в чем проблема? Вообще все что идет после тега <?php и до ?> не выводится на сервер, остается белая страница...И ещё вопрос как здесь на форуме выкладывать код чтобы он был как цитата, в рамке? Заранее спаибо!
Сохраняй скрипт как название.php
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|