За последние 24 часа нас посетили 19184 программиста и 1646 роботов. Сейчас ищут 816 программистов ...

Текст на картинке кривой

Тема в разделе "Обработка изображений средствами PHP", создана пользователем Lyona, 8 фев 2007.

  1. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    Lyona говорила про время от каждой из этих дат до сегодня.
    Lyona, у вас, кстати, разница не только в один день, но еще и в два года и 1 месяц :)
    Проверил это же на скрипте Dagdamora - вроде бы красиво работает. Попробуйте. Там и недели есть.

    Про картинки уже сказали...
     
  2. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Счетаем до сегодня
    PHP:
    1.  
    2. <?
    3. $base_day       = 28;       // no leading "0"
    4. $base_mon       = 9;        // no leading "0"
    5. $base_yr        = 2005;     // use 4 digit years!
    6.  
    7. $current_day        = date ("j");
    8. $current_mon        = date ("n");
    9. $current_yr     = date ("Y");
    10. ........
    11. ?>
    12.  


    PHP:
    1. <?
    2. $base_day       = 28;       // no leading "0"
    3. $base_mon       = 10;       // no leading "0"
    4. $base_yr        = 2005;     // use 4 digit years!
    5.  
    6. $current_day        = date ("j");
    7. $current_mon        = date ("n");
    8. $current_yr     = date ("Y");
    9. ........
    10. ?>
    Данный скрипт переделал под себя(добавил часы и минуты)
    вот что получилось (в некоторых случаях часы и минуты считает не правильно, ибо впадлу думать стало :) )
    [​IMG]
     
  3. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    Вльдемар Пеффко не пил 4 дня 11 часов 36 минут

    конечно! У тебя же parse error, unexpected ';' в подписи
    :D
     
  4. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    я задал такие даты 28.9.2005 и 28.10.2005 и получилось
    Цитата:
    The difference between 2005-9-28 and 2005-10-28 is:
    0 years, 1 month and 0 days

    Я ошиблась, для второй даты год 2003


    Вльдемар, а это так задумано, что не пил 5 дней 2 часа 31 минуту, а бегунок ровно на шестёрке?

    разве этими командами задаётся какой-то формат? У обоих только ширина и высота указывается. А потом я уже накладывать буду форматы gif и png в сочетаниях.

    Взяла скрипт Dagdamora
    Добавила туда дни, но кажется не то, потому что если подставлять дату 13.02.2006, то в ответе 1 год и 2 дня
    на датах 28.09.2005 и 28.10.2003 выдаётся 20 дней (если текущая дата 15.02.2007)
     
  5. Anonymous

    Anonymous Guest

    Lyona, нет, true color используется для jpg.
    а png - тоже разный бывает, если png-8 - т.е. фактически, тот же гиф, то он тоже индексированный, если png-24 (с альфа каналами) - он true color.
    т.е. разница между командами - одна создает индексированное изображение (обязательно, если хотите прозрачность) - это imagecreate, вторая(imagecreatetruecolor) - создает полноцветное изображение, где прозрачность будет только при сохранении в png-24, который во первых, ощутимо больше по размеру, во вторых, прозрачность в нем реализована альфа-каналом, что значит что в IE так просто работать не будет. Еще вопросы?
     
  6. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    Горбунов Олег, спасибо большое! По этому пункту вопросов нет - поняла :)
     
  7. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Да, значит идет 6-й день(правильно было бы 6-е сутки) после последнего употребления пеффка :)
    Ну уже правда не разу не 6-ой :lol:
     
  8. Anonymous

    Anonymous Guest

    а по второму - с датами у меня всегда плоховато было :oops:
     
  9. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    С датами никто не дружит?
     
  10. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    угу :)

    кстати, обратите внимание: в этом скрипте даты надо передавать без ведущих нулей.

    $v=array("day"=>28,"month"=>9,"year"=>2005);
    => Y: 1, m: 4, w: 4, d: 21

    $v=array("day"=>28,"month"=>09,"year"=>2005);
    => Y: 2, m: 1, w: 3, d: 19

    (Игра называется "Ну-ка, посчитай" :)
     
  11. Anonymous

    Anonymous Guest

    pel, о чего тут считать? Все по уставу. =) ;)
     
  12. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    а у меня в базе хранится без нулей число, поле TinyInt
     
  13. Anonymous

    Anonymous Guest

    Lyona, это к тому, что начинающееся с 0 число в PHP является не десятичным, а восьмиричным.
     
  14. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    ну раз уж у меня без нулей, то хотелось бы знать в чём ошибка и главное, как убрать её
     
  15. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    Кстати, я до этого недели не проверяла, а сейчас смотрю, у меня ещё и недели неудачно считаются.
     
  16. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    Люди-и-и, ну хоть кто-то, помогите разобраться с датами.... Пожа-а-алуйста!
    Я уже доделала всё остальное и только эти несколько дней разницы в датах портят мне жизнь...
     
  17. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    А попробуйте весь скрипт, который считает прошедшее время, взять в цикл. И в этом цикле пройтись, скажем, один год. Ну т.е. в цикле пусть меняются начальные даты от текущей до ровно год назад,.. помесячно. Ммм.. как же это по-русски сказать)
    Типа, сейчас 18.2.2007, посчитать разницу до 18.1.2007, 18.12.2006, 18.11.2006, ..., 18.1.2006
    При каждой итерации выводить на экран результат, а потом с календариком в руках все проверить.
    Может, найдете, где "сбой" происходит...
    Потом можно по дням то же самое, чтоб точнее...
     
  18. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    pel, а в чем смысл?
     
  19. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    Lyona, найти, с какого момента начнется неправильный подсчет. Можно будет четко выявить, откуда появляются лишние дни. А от этого уже плясать дальше.
    Ну или просто,.. чтоб не скучно было ;))
     
  20. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    я ввожу даты (сегодня у меня ещё 18.02.2007): и через тире ответ пишу:
    18.02.2007 - 1 день

    18.01.2006 - 1 год 1 мес 1 день
    18.02.2006 - 1 год 1 день
    18.03.2006 - 9 мес 4 дня
    18.04.2006 - 10 мес 3 дня
    18.05.2006 - 9 мес 4 дня

    и дальше до декабря попеременно 3-4 дня.
     
  21. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    3-4 дня - фигня
    А что с месяцами за прикол??? :shock:
    Год, потом 9 мес, 10, 9, ??? чзх

    Возьми, что ли, другой скрипт :)) Их тут помойму три было.
     
  22. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    pel, с месяцами это я недоглядела. Там всё правильно, это я так неудачно написала. Меня как раз интересует чтоб не было этого разброса в днях.
    Я видела тут только 2 скрипта, оба со своими глюками в днях.
     
  23. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    ну вот. Был еще такой скрипт Вльдемара:
    PHP:
    1. $base_day    = 19;
    2. $base_mon    = 9;
    3. $base_yr     = 2006;
    4.  
    5. $current_day = 19;
    6. $current_mon = 2;
    7. $current_yr  = 2007;
    8.  
    9. $base_mon_max = date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr));
    10.  
    11. $base_day_diff = $base_mon_max - $base_day;
    12.  
    13. $base_mon_diff = 12 - $base_mon - 1;
    14.  
    15. $start_day = 1;
    16. $start_mon = 1;
    17. $start_yr  = $base_yr + 1;
    18.  
    19. $day_diff = ($current_day - $start_day) + 1; // add today
    20. $mon_diff = ($current_mon - $start_mon) + 1; // add current month
    21. $yr_diff  = ($current_yr - $start_yr);
    22.  
    23. $day_diff = $day_diff + $base_day_diff;
    24. $mon_diff = $mon_diff + $base_mon_diff;
    25.  
    26. if ($day_diff >= $base_mon_max) {
    27.     $day_diff = $day_diff - $base_mon_max;
    28.     $mon_diff = $mon_diff + 1;
    29. }
    30.  
    31. if ($mon_diff >= 12) {
    32.     $mon_diff = $mon_diff - 12;
    33.     $yr_diff = $yr_diff + 1;
    34. }
    35.  
    36. print "The difference between <b>".$base_yr."-".$base_mon."-".$base_day."</b> ";
    37. print "and <b>".$current_yr."-".$current_mon."-".$current_day."</b> is:";
    38. print "<br><br>";
    39.  
    40. $years = "years";
    41. $days  = "days";
    42. if ($yr_diff == "1") $years = "year";
    43. if ($day_diff == "1") $days = "day";
    44.  
    45. print $yr_diff." ".$years.", ";
    46. print $mon_diff." month and ";
    47. print $day_diff." ".$days;
    тоже, вроде, красивенько :)

    Правда, как сказал Вльдемар, он не работает ни у кого, кроме него (и теперь еще + кроме меня))
    И тут недель нет. Но это ж теперь уже для вас не сложно? ;)
     
  24. Lyona

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

    С нами с:
    31 янв 2007
    Сообщения:
    58
    Симпатии:
    0
    pel, его я тоже смотрела.
    Результаты:

    The difference between 2005-9-28 and 2007-2-19 is:
    1 year, 4 month and 21 days

    The difference between 2003-10-28 and 2007-2-19 is:
    3 years, 3 month and 22 days

    The difference between 1996-2-28 and 2007-2-19 is:
    10 years, 11 month and 20 days

    The difference between 2006-2-28 and 2007-2-19 is:
    0 years, 11 month and 19 days

    вот эта разница в днях мне и не нравится...
    А в остальном у меня он тоже вроде работает нормально
     
  25. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    Lyona, та там 100пудов високосные попадаются,.. укороченные месяцы, 31е февраля, Марс в Скорпионе, мало ли)))

    Если честно, лично я бы сначала заморочился с календарем в руках,.. а потом либо понял бы, что все правильно, либо забил бы на этот фигов +- день :)