Dreammaker

Dreammaker
Рейтинг
569
Регистрация
20.04.2006
killerben:
как принять участие

Сделать как они говорят ;)

Что именно непонятно?

kxk:
незнающий всей прелести php как cgiшки

Кстати, а если php как модуль апача?

Brutus:
забугорное радио а-ля 80-ые...

Я как-то обслушался на LastFm всё что можно, потом вспомнил что мне музыка из фильмов о 50-ых нравится (Бриолин, Плакса) и стал слушать по тегу doo-wop :)

прикольно было как во времени провалился... :)

dimiks:
еще сервис, в который любой пользователь добавляет каталоги(например белые с тиц10+)

А чем http://baza.garb.ru не устроила? :)

В опере и фф даже в стандартных консолях ошибок больше информации даётся, чем в ИЕ.

claygod:
я выложу рекомендуемые (проверенные) хостинги в список для посетителей

Не лучший вариант: вспоминается недавний ответ из техподдержки одной из коммерческих CMS - ваш хостинг не входит в список на сайте - меняйте хостинг.

Я подумал: o_O :)

В большинстве случаев зависимость от хостинга - это недостаток опыта программера и того, что он не предусмотрел разные варианты (если не оговорено другое, у меня например была разработка когда для ускорения заливки больших прайсов был использован LOAD DATA INFILE, но при этом это было оговорено с заказчиком).

Если же CMS универсальная, то добивайтесь нормальной работы - мне трудно представить, что вы могли сделать такое, что сайт не работает на некоторых хостингах (генерация статических страниц без прав, зенд, использование php5 специфичных фич ?).

update: ага, увидел : зенд и mod_rewrite.

Если первое нужно проверять, то второе должно быть фичей, а не обязательным требованием.

Думаю вряд ли удасться перебить LastFm :)

Вот переписал скриптец.

Добавились новые параметры:

$logo - это имя файла с картинкой которая будет использоваться как водяной знак - положить в корень сайта (т.е., рядом со скриптом).

$flag - это строчка, которая будет дописываться в название результирующего файла, например, '_sm' - было image.jpg - станет image_sm.jpg

$x, $y - x, y - координаты точки в картинке результате откуда начнётся верхний левый угол водного знака. Советую оставить по умолчанию null и null - в этом случае скрипт вставит вотермарк в правый нижний угол значимой картинки (то есть, если будут слева и справа белые поля, то он не на них влепит, а именно на уменьшенную картинку).


<?

$width= 200; // ширина полученного рисунка;

$height = 100; // высота рисунка

$background = 0xFFFFFF; #0xFFFFFF - это белый

$quality = 100; // качество сжатия здесь 100% ;

$logo = 'logo.png'; // название файла с водяным знаком

$flag = '_sm'; // строчка ,которая будет добавляться к названию файла. q123.jpg -> q123_sm.jpg

$x = null; // x - координата точки в картинке-результате куда будет вставлен вотермарк

$y = null; // у- координата точки в картинке-результате куда будет вставлен вотермарк

// (точно не помню, но по-моему с форума Нетката, по крайней мере я выудил её из своей разработки на неткате)
// ну и по просьбе общественности дописано добавление водніх знаков в картинку.
function img_resize($src, $dest, $logosrc, $width, $height, $rgb=0xFFFFFF, $quality=100, $flag, $x=null, $y=null)
{
if (!file_exists($src)) {
echo "File ne exists";
return false;
}

$size = getimagesize($src);

if ($size === false) {
echo "Razmer ne exists";
return false;
}
// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);

imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);

if ( !empty($logosrc) ) {
if (!file_exists($logosrc)) {
echo "Logo ne exists";
return false;
}

$size2 = getimagesize($logosrc);

if ($size === false) {
echo "Razmer logo ne exists";
return false;
}

$format = strtolower(substr($size2['mime'], strpos($size2['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$lisrc = $icfunc($logosrc);


$x = ( empty($x) ) ? $new_left + $new_width - $size2[0] : $x;

$y = ( empty($y) ) ? $new_top + $new_height - $size2[1] : $y;


imagecopyresampled($idest, $lisrc, $x, $y, 0, 0,
$size2[0], $size2[1], $size2[0], $size2[1]);

imagedestroy($lisrc);

preg_match('~(.+)\.(.+)$~', $dest, $match);

$dest = $match[1].$flag.'.'.$match[2];

}
imagejpeg($idest, $dest, $quality);


imagedestroy($isrc);
imagedestroy($idest);

return true;

}

//Взято из CodeIgniter (хэлпер file_helper) www.codeigniter.com

function get_filenames($source_dir, $include_path = FALSE)
{
static $_filedata = array();

if ($fp = @opendir($source_dir))
{
while (FALSE !== ($file = readdir($fp)))
{
if (@is_dir($source_dir.$file) && substr($file, 0, 1) != '.')
{
get_filenames($source_dir.$file."/", $include_path);
}
elseif (substr($file, 0, 1) != ".")
{

$_filedata[] = ($include_path == TRUE) ? $source_dir.$file : $file;
}
}
return $_filedata;
}
}

$files = get_filenames($_SERVER['DOCUMENT_ROOT'].'/photos1/');


foreach ($files as $file){
img_resize($_SERVER['DOCUMENT_ROOT'].'/photos1/'.$file, $_SERVER['DOCUMENT_ROOT'].'/photos2/'.$file, $_SERVER['DOCUMENT_ROOT'].'/'.$logo, $width, $height, $background, $quality, $flag, $x, $y);
}

При вашем желании автор сией компиляции не откажется от donation :2cents: :D

Также принимаются багрепорты :)

Jefa, ну разве что попозжее. :)

или сегодня вечером или уже завтра. Это если php нормально дружит с прозрачными png (точно не помню как оно там). Но на сайтах делают значит должно получится.

p.s. там кстати ошибка была в скрипте - исправил.

p.p.s. Там ещё не добавляет к названиям _sm или какую-то другую строчку, потом и это сделаю, если время будет.

Всего: 10921