Решил я на сайте дать юзерам возможность создавать демотиваторы, а все скрипты, что мог найти либо за деньги, либо кривый. Решил написать свой собственный, вобщем решил и с остальными поделиться, вдруг еще кому нужно. Скрипт создает демотиваторы из картинок jpg, gif, png, bmp. Интергируется в любой сайт. Качаем здесь : http://uvsr.stu.ru/dm/root_dm.zip Демо: http://uvsr.stu.ru/dm/dm_create.php
Молодец, за энтузиазм пятерочка. Код (Text): function dm_win2utf($string){ } Чем не подошла стандартная функция iconv или mb_convert_encoding? PHP: ImageCopyResized($img2, $img, $tx, $ty, 0, 0, $bx-$tx, $y, $x, $y); Желательно использовать *resampled. Медленно, но качественно. Код (Text): switch($ext[2]) { case 2: {$img = ImageCreateFromJPEG($image); break;} case 1: {$img = ImageCreateFromGIF($image); break; } case 3: {$img = ImageCreateFromPNG($image); break;} case 6: {$img = ImageCreateFromBMP($image); break;} default : { unlink ($image); return 2; } } В таких случаях очень полезна функция imagecreatefromstring, если конечное разрешение сводится к какому-то одному, а не к исходному.
Apple Не на всех серверах работает и не всегда корректно. Сталкивался с подобным не раз. К тому-же mb_convert_encoding (посмотрел ее описание) введена в PHP начиная с 4-й версии, а если у человека более древняя? Мало-ли. А данная функция должна работать везде и к версии не привязана. Думаю, что так все-же лучше. Ну, для демотиватора качество не играет какой-то существенной роли. Это наверное потому что я программист старой школы - не привык полагаться на автоматику Считаю что если известен тип файла, надо однозначно точно "сказать" программе в каком он формате.
Сам то понял, что наплел тут? На третьем пхп тебе школота демотиваторы строчить будет? Остальные сами в состоянии написать нужный кусок кода. Хотя да, 98-го года выпуска, самый свежак.
А давайте без хамства? Нормальная программа должна работать в любой версии. И если вы как программист не можете создать универсальной программы, которая выполнялась-бы ВЕЗДЕ - это проблема ваших кривых рук. Эх, вспоминаю старый добрый Turbo Basic от Borland-a, программы которого до сих пор, спустя более 20 лет нормально компилятся и работают на ура. Понятно, что сейчас это никому не нужно, но здесь важно по факту - насколько раньше системы были унифицированы, сейчас, к сожалению, этого практически нет.
KMB Разработчики php можно сказать отказались от обратной совместимости. Я бы еще понял, если бы ты программировал, не используя 5.3 - так как много где действительно стоит 5.2 Но про версию 4 точно забывать нужно - официальная поддержка её закончилась в 2006 году.
KMB Я тебе терпеливо ответил только потому, что даже предположить не мог, что ты начнешь на полном серьёзе аргументировать такую ерунду. Но ладно, поехали: Работает корректно всегда и на всех поддерживаемых разработчиками версиях. Значит человеку нужно хостера менять. Тут без вариантов. Реалии не рассчитаны под устаревшие стандарты: телеграф ушел в прошлое. Послав СМС-ку ты не бежишь на почту, чтобы для совместимости написать ещё и бумажное письмо. Либо одно, либо другое. Как думаешь, зачем нужно было тратить время, чтобы писать эту автоматику, если на неё не нужно полагаться? =) Зачем нужны функции, если можно просто вставлять везде один и тот же код?
Apple, а можно я в качестве аргумента процитирую вам ваши-же собственные слова? Ну всмысле вот эти: "Ведь, если звезды зажигают - значит - это кому-нибудь нужно". Вот вам может быть и не нужно а другим вполне может быть нужно. Пример: у одного моего знакомого до сих пор на маршрутизаторе стоит WinNT 4.0 и он не собирается ее менять. Кажалось-бы нафига это надо, ан нет, дело в том, что все современные вирусяки расчитаны под современные операционки, поэтому конкретно под WinNT 4.0 подцепить сейчас вирус непросто. Так что я-бы на вашем месте не стал делать столь категоричных заявлений. Кстати во многих специализированных контролерах до сих пор используют DOS. Любая автоматика делается чтобы упростить кому-то жизнь, но любая автоматика всегда имеет неприятную особенность давать сбои поэтому полагаться на нее можно далеко не всегда. tommyangelo Поддержка phpBB 2*x, на котором вы сейчас находитесь, насколько знаю, тоже )) Сколько лет вот этой, конкретной версии движка, которая здесь на сайте стоит? Я хоть и новичок, но я так полагаю никто здесь особо не возмущается и не требует поменять версию на Olympus 3.0 alexfer Лично для вас, судя по вопросу - никакой.
KMB Вы подменяете понятия) Да, версия движка старая, поддержка закончилась. Как это связано с тем, что никому в голову не приходит писать под php4 в 2011 году?
Просто логика здесь одна и та же. Если php4 нужно, как вы сказали, забыть, потому что закончилась поддержка, значит по той-же логике следовало-бы забыть в числе всего прочего и phpBB 2*x. Но ведь не забывают-же. Только это моя реплика и означала. p.s. Кстати, если говорить об универсальности - форум phpBB 2*x отрисовывает графическую каптчу вообще без использования библиотеки GD, это по своей сути примерно как у меня перекодировка в UTF (с чего весь сыр-бор и начался) без привязки к специфическим функциям и библиотекам (а для работы iconv нужна спец. библиотека). Так что как видим разработчики форума в этом плане со мною солидарны.
Посмотрите дистр. phpBB 2*x, файл includes/usercp_confirm.php Двушка отрисовывает каптчу сама, GD она не использует. А вот Олимпус 3 определяет есть GD или нет, если есть- использует ее, если нет - тоже рисует сам.
KMB И что - сейчас есть те, кто пишут модули для phpBB 2*x и вовсю устанавливают его? Если да - они тоже извращенцы )) PS. Не поленился зашел на http://www.phpbb.com Так и не смог скачать 2 версию, только 3я.
tommyangelo Повторите это админам данного форума ))) Если не умеете искать, это не мои проблемы. http://sourceforge.net/projects/phpbb/files/
KMB Вы меня не слышите) Админы данного форума его поддерживают в работоспособном состоянии, но никак не пишут расширения Вы эту ссылку нашли на оф. сайте phpbb ?
Но и обновляться не спешат. Да, раздел "Download" -> Download Mirror @ sourceforge, там дальше "Home", получите полный архив проекта.
спасибо за скрипт, можете подсказать для чайника, как поменять цвет рамки и расположение подписи относительно рисунка
Не имею ничего против скриптов, написанных так, что будут выполняться даже на очень безнадёжно устаревших серверах (на которых ещё и не подключены некоторые расширения), но... IMHO, php4 (а уж тем более младше) - реально не актуально. Да и iconv и mb_string - есть практически везде. Я не знаю таких хостеров, у которых не подключены эти библиотеки. Мне кажется, что уже просто лишено смысла писать скрипты, работающие везде, на любых (очень устаревших) системах - времени потратите больше, работать будет медленнее (скомпилированные библиотечные функции - всяко побыстрей самописных работают).
Если поменять цвет рамки, демотиватор будет выглядеть не по "принятым правилам". Но если надо, то здесь, внутри dm.php есть строчка PHP: $col = ImageColorAllocate($img2, 255, 255, 255); Тут поменять на нужный. Формат цвета обычный RGB Правда при этом цвет надписей тоже изменится. Если цвет надписей надо оставить прежним, тогда правка будет несколько сложней. В этом случае надо оставить $col = без изменений, вводим новую переменную, например PHP: $col3 = ImageColorAllocate($img2, 255, 255, 255); (тамже в блоке, под $col = .... , вместо 255,255,255 ставим какой надо цвет) Затем здесь PHP: // Рамки на изображении ImageRectangle($img2, $x1 - 5, $y1 - 5, $x2 + 4, $y2 + 4, $col); ImageRectangle($img2, $x1 - 6, $y1 - 6, $x2 + 5, $y2 + 5, $col); меняем $col на $col3 Не знаю, поняли вы этот мой сумбур, пишите если чего неясно. За комментарий спасибо, в следующем релизе сделаю чтобы цвета рамки и подписей можно было менять без подобного шаманизма )) А что не так с положением подписи относительно рисунка? Все должно быть строго по центру, как по вертикали так и по горизонтали.
Может быть, может быть, хотя я все-же считаю что универсальность лучше, и программа должна работать везде, если конечно в ней изначально не предусмотрено использование расширений, которые имеются только в новых версиях. В моем-же случае кроме GD и еще FreeType (без этого не нарисуешь текст) больше ничего иного для работы не требуется. Что касается скомпилированных библиотечных функций и скорости их работы, то в данном случае это неактуально, все равно разница будет незаметна.
Ну понятно. Но просто указать системные требования - проще намного )) И на мой взгляд целесообразнее. Мы же когда покупаем новую компьютерную игрушку - на ней же тоже написано, что работает только под WinXP и старше (А сейчас наверно уже полно таких, которые и под WinXP не пашут - только под семёркой)