За последние 24 часа нас посетили 62084 программиста и 1596 роботов. Сейчас ищут 817 программистов ...

Скрипт создания демотиваторов

Тема в разделе "Прочее", создана пользователем KMB, 9 сен 2011.

  1. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Решил я на сайте дать юзерам возможность создавать демотиваторы, а все скрипты, что мог найти либо за деньги, либо кривый. Решил написать свой собственный, вобщем решил и с остальными поделиться, вдруг еще кому нужно.
    Скрипт создает демотиваторы из картинок jpg, gif, png, bmp. Интергируется в любой сайт.
    Качаем здесь : http://uvsr.stu.ru/dm/root_dm.zip
    Демо: http://uvsr.stu.ru/dm/dm_create.php
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Молодец, за энтузиазм пятерочка.

    Код (Text):
    1. function dm_win2utf($string){ }
    Чем не подошла стандартная функция iconv или mb_convert_encoding?

    PHP:
    1. ImageCopyResized($img2, $img, $tx, $ty, 0, 0, $bx-$tx, $y, $x, $y);
    Желательно использовать *resampled.
    Медленно, но качественно.

    Код (Text):
    1. switch($ext[2]) {
    2.  
    3.     case 2: {$img = ImageCreateFromJPEG($image); break;}
    4.     case 1: {$img = ImageCreateFromGIF($image); break; }
    5.     case 3: {$img = ImageCreateFromPNG($image); break;}
    6.     case 6: {$img = ImageCreateFromBMP($image); break;}
    7.     default : {
    8.         unlink ($image);
    9.         return 2;
    10.     }
    11.  
    12. }
    В таких случаях очень полезна функция imagecreatefromstring, если конечное разрешение сводится к какому-то одному, а не к исходному.
     
  3. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Apple
    Не на всех серверах работает и не всегда корректно. Сталкивался с подобным не раз. К тому-же mb_convert_encoding (посмотрел ее описание) введена в PHP начиная с 4-й версии, а если у человека более древняя? Мало-ли. А данная функция должна работать везде и к версии не привязана. Думаю, что так все-же лучше.

    Ну, для демотиватора качество не играет какой-то существенной роли.

    Это наверное потому что я программист старой школы - не привык полагаться на автоматику :)
    Считаю что если известен тип файла, надо однозначно точно "сказать" программе в каком он формате.
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Сам то понял, что наплел тут? На третьем пхп тебе школота демотиваторы строчить будет? Остальные сами в состоянии написать нужный кусок кода.
    Хотя да, 98-го года выпуска, самый свежак.
     
  5. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    А давайте без хамства? Нормальная программа должна работать в любой версии. И если вы как программист не можете создать универсальной программы, которая выполнялась-бы ВЕЗДЕ - это проблема ваших кривых рук.

    Эх, вспоминаю старый добрый Turbo Basic от Borland-a, программы которого до сих пор, спустя более 20 лет нормально компилятся и работают на ура. Понятно, что сейчас это никому не нужно, но здесь важно по факту - насколько раньше системы были унифицированы, сейчас, к сожалению, этого практически нет.
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    KMB
    Разработчики php можно сказать отказались от обратной совместимости. Я бы еще понял, если бы ты программировал, не используя 5.3 - так как много где действительно стоит 5.2

    Но про версию 4 точно забывать нужно - официальная поддержка её закончилась в 2006 году.
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    KMB
    Я тебе терпеливо ответил только потому, что даже предположить не мог, что ты начнешь на полном серьёзе аргументировать такую ерунду. Но ладно, поехали:

    Работает корректно всегда и на всех поддерживаемых разработчиками версиях.

    Значит человеку нужно хостера менять. Тут без вариантов.
    Реалии не рассчитаны под устаревшие стандарты: телеграф ушел в прошлое.
    Послав СМС-ку ты не бежишь на почту, чтобы для совместимости написать ещё и бумажное письмо. Либо одно, либо другое.

    Как думаешь, зачем нужно было тратить время, чтобы писать эту автоматику, если на неё не нужно полагаться? =)
    Зачем нужны функции, если можно просто вставлять везде один и тот же код?
     
  8. alexfer

    alexfer Активный пользователь

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
    А нафиг это скрипт? Какая от него практическая польза?
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Послушайте! Ведь, если звезды зажигают - значит - это кому-нибудь нужно? (с) сами знаете кто
     
  10. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Apple, а можно я в качестве аргумента процитирую вам ваши-же собственные слова? Ну всмысле вот эти: "Ведь, если звезды зажигают - значит - это кому-нибудь нужно". Вот вам может быть и не нужно а другим вполне может быть нужно. Пример: у одного моего знакомого до сих пор на маршрутизаторе стоит WinNT 4.0 и он не собирается ее менять. Кажалось-бы нафига это надо, ан нет, дело в том, что все современные вирусяки расчитаны под современные операционки, поэтому конкретно под WinNT 4.0 подцепить сейчас вирус непросто. Так что я-бы на вашем месте не стал делать столь категоричных заявлений. Кстати во многих специализированных контролерах до сих пор используют DOS.

    Любая автоматика делается чтобы упростить кому-то жизнь, но любая автоматика всегда имеет неприятную особенность давать сбои поэтому полагаться на нее можно далеко не всегда.

    tommyangelo
    Поддержка phpBB 2*x, на котором вы сейчас находитесь, насколько знаю, тоже :)))
    Сколько лет вот этой, конкретной версии движка, которая здесь на сайте стоит? Я хоть и новичок, но я так полагаю никто здесь особо не возмущается и не требует поменять версию на Olympus 3.0

    alexfer
    Лично для вас, судя по вопросу - никакой.
     
  11. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    KMB
    Вы подменяете понятия) Да, версия движка старая, поддержка закончилась.

    Как это связано с тем, что никому в голову не приходит писать под php4 в 2011 году?
     
  12. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Просто логика здесь одна и та же. Если php4 нужно, как вы сказали, забыть, потому что закончилась поддержка, значит по той-же логике следовало-бы забыть в числе всего прочего и phpBB 2*x. Но ведь не забывают-же. Только это моя реплика и означала.

    p.s. Кстати, если говорить об универсальности - форум phpBB 2*x отрисовывает графическую каптчу вообще без использования библиотеки GD, это по своей сути примерно как у меня перекодировка в UTF (с чего весь сыр-бор и начался) без привязки к специфическим функциям и библиотекам (а для работы iconv нужна спец. библиотека). Так что как видим разработчики форума в этом плане со мною солидарны.
     
  13. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    просветите, пожалуйста.

    ну да, так и есть :)


    PS> а мужики-то не знают
     
  14. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Посмотрите дистр. phpBB 2*x, файл includes/usercp_confirm.php
    Двушка отрисовывает каптчу сама, GD она не использует. А вот Олимпус 3 определяет есть GD или нет, если есть- использует ее, если нет - тоже рисует сам.
     
  15. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    KMB
    И что - сейчас есть те, кто пишут модули для phpBB 2*x и вовсю устанавливают его?
    Если да - они тоже извращенцы ))

    PS. Не поленился зашел на http://www.phpbb.com
    Так и не смог скачать 2 версию, только 3я.
     
  16. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    tommyangelo
    Повторите это админам данного форума :))))

    Если не умеете искать, это не мои проблемы.
    http://sourceforge.net/projects/phpbb/files/
     
  17. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    KMB
    Вы меня не слышите)
    Админы данного форума его поддерживают в работоспособном состоянии, но никак не пишут расширения
    Вы эту ссылку нашли на оф. сайте phpbb ?
     
  18. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Но и обновляться не спешат.
    Да, раздел "Download" -> Download Mirror @ sourceforge, там дальше "Home", получите полный архив проекта.
     
  19. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Что ж, за ссылку спасибо, тем более, что сама за себя говорит

     
  20. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    KMB
    всё правильно, 5+ за скрипт
     
  21. Olly

    Olly Активный пользователь

    С нами с:
    24 сен 2011
    Сообщения:
    4
    Симпатии:
    0
    спасибо за скрипт, можете подсказать для чайника, как поменять цвет рамки и расположение подписи относительно рисунка
     
  22. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Не имею ничего против скриптов, написанных так, что будут выполняться даже на очень безнадёжно устаревших серверах (на которых ещё и не подключены некоторые расширения), но...
    IMHO, php4 (а уж тем более младше) - реально не актуально. Да и iconv и mb_string - есть практически везде. Я не знаю таких хостеров, у которых не подключены эти библиотеки.
    Мне кажется, что уже просто лишено смысла писать скрипты, работающие везде, на любых (очень устаревших) системах - времени потратите больше, работать будет медленнее (скомпилированные библиотечные функции - всяко побыстрей самописных работают).
     
  23. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Если поменять цвет рамки, демотиватор будет выглядеть не по "принятым правилам".
    Но если надо, то здесь, внутри dm.php есть строчка
    PHP:
    1. $col = ImageColorAllocate($img2, 255, 255, 255);
    Тут поменять на нужный. Формат цвета обычный RGB
    Правда при этом цвет надписей тоже изменится.

    Если цвет надписей надо оставить прежним, тогда правка будет несколько сложней.
    В этом случае надо оставить $col = без изменений, вводим новую переменную, например
    PHP:
    1. $col3 = ImageColorAllocate($img2, 255, 255, 255);
    (тамже в блоке, под $col = .... , вместо 255,255,255 ставим какой надо цвет)
    Затем здесь
    PHP:
    1. // Рамки на изображении
    2. ImageRectangle($img2, $x1 - 5, $y1 - 5, $x2 + 4, $y2 + 4, $col);
    3. ImageRectangle($img2, $x1 - 6, $y1 - 6, $x2 + 5, $y2 + 5, $col);
    4.  
    меняем $col на $col3

    Не знаю, поняли вы этот мой сумбур, пишите если чего неясно.
    За комментарий спасибо, в следующем релизе сделаю чтобы цвета рамки и подписей можно было менять без подобного шаманизма :)))

    А что не так с положением подписи относительно рисунка? Все должно быть строго по центру, как по вертикали так и по горизонтали.
     
  24. KMB

    KMB Активный пользователь

    С нами с:
    9 сен 2011
    Сообщения:
    63
    Симпатии:
    0
    Может быть, может быть, хотя я все-же считаю что универсальность лучше, и программа должна работать везде, если конечно в ней изначально не предусмотрено использование расширений, которые имеются только в новых версиях. В моем-же случае кроме GD и еще FreeType (без этого не нарисуешь текст) больше ничего иного для работы не требуется. Что касается скомпилированных библиотечных функций и скорости их работы, то в данном случае это неактуально, все равно разница будет незаметна.
     
  25. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну понятно.
    Но просто указать системные требования - проще намного :))) И на мой взгляд целесообразнее.
    Мы же когда покупаем новую компьютерную игрушку - на ней же тоже написано, что работает только под WinXP и старше :) (А сейчас наверно уже полно таких, которые и под WinXP не пашут - только под семёркой)