1. PHP / Говнокод #9273

    +148

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    <?php
    function demotivator($image, $wheresave, $slogan1, $slogan2, $copyright) {
    $ext = getimagesize($image);
    // Открываем изображение
    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;
    	}
    }
    // Получение размеров изображения
    $x = ImageSX($img); // X
    $y = ImageSY($img); // Y
    // Размер черного прямоугольника, который будем рисовать
    $tx = $x * 0.1;
    $ty = $x * 0.1;
    $bx = $x + $tx;
    $by = $y + $ty;
    $dx= $x * 0.01; // Смещение. Необходимо для рисования рамки
    $dy= $x * 0.01;
    // Черный фон
    $black = ImageColorAllocate($img, 0, 0, 0);
    // Создаем новое изображение
    $img2 = ImageCreateTrueColor($bx + $tx, $by + $tx * 2.6);
    $black = ImageColorAllocate($img2, 0, 0, 0);
    // Масштабирование
    ImageCopyResized($img2, $img, $tx, $ty, 0, 0, $bx-$tx, $y, $x, $y);
    // Расчет смещений для рисования рамки
    $x1 = $tx;
    $y1 = $ty;
    $x2 = $bx;
    $y2 = $y + $ty;
    // Цвета рамки, слоганов и копирайта
    $col = ImageColorAllocate($img2, 255, 255, 255); // Цвет слоганов
    $col2 = ImageColorAllocate($img2, 255, 255, 255); // Цвет копирайта
    $col3 = ImageColorAllocate($img2, 255, 255, 255); // Цвет рамки
    // Рамки на изображении
    ImageRectangle($img2, $x1 - 5, $y1 - 5, $x2 + 4, $y2 + 4, $col3);
    ImageRectangle($img2, $x1 - 6, $y1 - 6, $x2 + 5, $y2 + 5, $col3);
    // Пишем слоганы, сначала с X=0, чтобы получить линейные размеры текста
    $s1 = ImageTTFText($img2, 0.06 * $bx, 0, $dx, $by + $ty, $col, "/times.ttf", $slogan1);
    $s2 = ImageTTFText($img2, 0.035 * $bx, 0, $dx, $by + $ty + 0.08 * $bx, $col, "/arial.ttf", $slogan2);
    // 1-й слоган не помещается в картинку - ошибка!
    if (($s1[2] - $s1[0]) > $bx + $tx) $sl1 = 1;
    $dx = (($bx + $tx) - ($s1[2] - $s1[0]))/2; // Смещение. Эта величина определяет центровку текста для 1-го слогана
    // Непосредственно текст. 1-й слоган
    ImageFilledRectangle($img2, 0, $y2 + 10, $bx + $tx, $by + $tx * 2.8, $black);
    ImageTTFText($img2, 0.06 * $bx, 0, $dx, $by + 1.1*$ty, $col, "/times.ttf", $slogan1);
    $dx = (($bx + $tx) - ($s2[2] - $s2[0]))/2; // Смещение. Эта величина определяет центровку текста для 2-го слогана
    // Непосредственно текст. 2-й слоган (таглайн)
    if ($dx < 0)  {
    	// Текст не умещается в картинку, масштабируем.
    	$s = $s2[2] - $s2[0];
    	$size = (0.035 * $bx * $bx) /$s;
    	$s2 = ImageTTFText($img2, $size, 0, $dx, $by + $ty + 0.08 * $bx, $col, "/arial.ttf", $slogan2);
    	$dx = (($bx + $tx) - ($s2[2] - $s2[0]))/2;
    	ImageFilledRectangle($img2, 0, $by + 1.2* $tx, $bx + $tx, $by + $tx * 2.6, $black);
    	ImageTTFText($img2, $size, 0, $dx, $by + $ty + 0.08 * $bx, $col, "/arial.ttf", $slogan2);
    } else  {
    	$size = 0.035 * $bx;
    	ImageFilledRectangle($img2, 0, $by + 1.4*$tx, $bx + $tx, $by + $tx * 2.3, $black);
    	ImageTTFText($img2, $size, 0, $dx, $by + $ty + 0.08 * $bx, $col, "/arial.ttf", $slogan2);
    }
    // Copyright
    ImageTTFText($img2, $size/1.7, 0, 10, $by + $tx * 2.5, $col2, "/arial.ttf", $copyright);
    ImageJpeg($img2, $wheresave);
    ImageDestroy($img2);
    return 0;
    }
    ?>

    Код не мой, я просто разместил объяву.

    Запостил: varg242, 31 Января 2012

    Комментарии (6) RSS

    • >$ext = getimagesize($image);
      или я что то не понял или тут не хватает 1 аргумента и если уж если использовать то его.
      Ответить
    • А что тут не так за исключение отсутствия оопешности?
      Ответить
      • Это
        $ext = getimagesize($image);
        // Открываем изображение
        switch($ext[2]) { ...}
        бредни.

        алгоритм
        // Размер черного прямоугольника, который будем рисовать
        // Создаем новое изображение
        Это делают только когда изображение png в остальных случаях избыточность.
        // Масштабирование -- Сразу сделать не вариант ????

        В общем код надо оптимизировать и куски говнеца выковыривать.
        Ответить
    • Ух ты, код чтобы делать тыренные картинки со смищными подписями!
      Ответить
    • а теперь, внимание, вопрос: что в черном прямоугольнике?
      Ответить

    Добавить комментарий