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

    +56

    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
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    <html>
    <head>
    <style>
       body{
        background-color: #3366CC; /* Цвет фона веб-страницы */
       }
    </style>
    </head>
    <body>
    <?php
    	/*error_reporting(E_ALL);*/
    	class Mirror{
    		public $sizeX;
    		public $sizeY;
    		public $filenameI;
    		public $filenameO;
    		public $red;
    		public $green;
    		public $blue;
    		public $alpha;
    		function __construct($f){
    			$this->filenameI=$f.".png";
    			$this->filenameO=$f."2.png";
    			$size=getimagesize($this->filenameI);
    			$this->sizeX=$size[0];
    			$this->sizeY=$size[1];
    		}
    		function saveImg(){
    			if(!file_exists($this->filenameO)){
    				$xx=$this->sizeX;
    				$yy=($this->sizeY)*2;
    				$im = imagecreatetruecolor($xx, $yy);
    				imageAlphaBlending($im, false);
    				imageSaveAlpha($im, true);
    				for($x=0;$x<$xx;$x++){
    					for($y=0;$y<$yy;$y++){
    						$r=$this->red[$x][$y];
    						$g=$this->green[$x][$y];
    						$b=$this->blue[$x][$y];
    						$alph=$this->alpha[$x][$y];
    						$color=ImageColorAllocateAlpha($im, $r, $g, $b, $alph);
    						imagesetpixel($im, $x, $y, $color);
    					}
    				}
    				imagepng($im, $this->filenameO);
    				imagedestroy($im);
    			}
    			echo "<img src=\"".$this->filenameI."\" /><hr>\n";
    			echo "<img src=\"".$this->filenameO."\" /><br>\n";
    		}
    		function loadImg(){
    			$im = imagecreatefrompng($this->filenameI);
    			for($x=0;$x<$this->sizeX;$x++){
    				for($y=0;$y<$this->sizeY;$y++){
    					$rgb = imagecolorat($im, $x, $y);
    					$color=imagecolorsforindex($im, $rgb);
    					$this->red[$x][$y]=$color['red'];
    					$this->green[$x][$y]=$color['green'];
    					$this->blue[$x][$y]=$color['blue'];
    					$this->alpha[$x][$y]=$color['alpha'];
    				}
    			}
    			imagedestroy($im);
    		}
    		function createMirror(){
    			if(!file_exists($this->filenameO)){
    				$yy=($this->sizeY*2);
    				for($x=0;$x<$this->sizeX;$x++){
    					$alph=0;
    					for($y=$this->sizeY;$y<$yy;$y++){
    						if($alph<126){
    							$alph++;
    						}
    						$this->red[$x][$y]=$this->red[$x][$this->sizeY-($y-$this->sizeY)-1];
    						$this->green[$x][$y]=$this->green[$x][$this->sizeY-($y-$this->sizeY)-1];
    						$this->blue[$x][$y]=$this->blue[$x][$this->sizeY-($y-$this->sizeY)-1];
    						$this->alpha[$x][$y]=$alph+$this->alpha[$x][$this->sizeY-($y-$this->sizeY)-1];
    						if($this->alpha[$x][$y]>127) $this->alpha[$x][$y]=127;
    					}
    				}
    			}
    		}
    	}
    	$filename="alpha";
    	$mirror=new Mirror($filename);
    	$mirror->loadImg();
    	$mirror->createMirror();
    	$mirror->saveImg();
    ?>
    </body>
    </html>

    Делал для одного сайта зеркальное отражение картинки (photoshop использовать не умеем-с). Почему-то сервер часто падал.
    Как оно работает, можно посмотреть здесь http://xcont.com/perc/newperceptron/cell/mirror.php

    Запостил: xcont, 11 Июля 2012

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

    • Вызывать ImageMagick уж и то быстрее будет.
      http://www.imagemagick.org/Usage/advanced/#reflections
      Ответить
    • > body{
      > background-color: #3366CC; /* Цвет фона веб-страницы */
      > }
      Спасибо, кэп!
      Ответить
      • > Цвет фона веб-страницы
        Фон цвета веб-страницы
        Ответить
        • > Фон цвета веб-страницы
          Страница фона веб-цвета
          Ответить
    • а мне непонятно, нафига тут ООП. писал бы простыню, т.к. и так месиво.
      Ответить
      • Чтобы потом насовать туда других плюшек-вкусняшек.
        $mirror=new Mirror($filename);
        $mirror->loadImg();
        $mirror->createMirror();
        $mirror->createShadow();
        $mirror->createOtherShits();
        $mirror->saveImg();


        Можно сделать такой себе php-фотошоп.
        Ответить
        • class PHotoshoP {}
          Ответить
        • > плюшек-вкусняшек
          для говноедов?
          методы перегружены ненужной функциональностью.
          например, зачем сразу читать писать массивы цветовых компонентов? или
          > file_exists($this->filenameO)
          > <img src=\"".$this->filenameO."\" />
          все-таки файл или URL?

          ну и так далее.
          вывод - нехрен изобретать заново ImageMagick
          Ответить
    • прошу прощения за мой французский...
      function image_flip($img, $type=''){
      
          $width  = imagesx($img);
          $height = imagesy($img);
          $dest   = imagecreatetruecolor($width, $height);
          
          switch($type){
              case 'vert':
                  for($i=0;$i<$height;$i++){
                      imagecopy($dest, $img, 0, ($height - $i - 1), 0, $i, $width, 1);
                  }
              break;
              case 'horiz':
                  for($i=0;$i<$width;$i++){
                      imagecopy($dest, $img, ($width - $i - 1), 0, $i, 0, 1, $height);
                  }
              break;
              case 'both':
                  for($i=0;$i<$width;$i++){
                      imagecopy($dest, $img, ($width - $i - 1), 0, $i, 0, 1, $height);
                  
                  }
                  $buffer = imagecreatetruecolor($width, 1);
                  for($i=0;$i<($height/2);$i++){
                      imagecopy($buffer, $dest, 0, 0, 0, ($height - $i -1), $width, 1);
                      imagecopy($dest, $dest, 0, ($height - $i - 1), 0, $i, $width, 1);
                      imagecopy($dest, $buffer, 0, $i, 0, 0, $width, 1);
                  }
                  imagedestroy($buffer);
              break;
              default:
                  return $img;
          }
          return $dest;
      }
      Ответить

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