Advertisement
ShadyPL

PHP Paint Library

Dec 18th, 2013
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.77 KB | None | 0 0
  1. <?php
  2. /**
  3.  * @package: Paint <biblioteka graficzna>
  4.  * @version: 1.0.0
  5.  * @author:  shady
  6.  */
  7.  
  8. class Paint
  9.   {
  10.    
  11.     protected $paint;
  12.    
  13.     public function __construct( )
  14.       {
  15.         # jeśli serwer nie ma włączonego GD
  16.        if ( !extension_loaded( 'gd' ) )
  17.         # spróbuj załadować samodzielnie biblioteke GD
  18.            if ( !dl( 'gd.so' ) )
  19.                 exit( 'Brak wsparcia dla biblioteki GD' );
  20.       }
  21.    
  22.     # metoda do tworzenia grafiki z istniejących plików
  23.    public function otworz( $plik, $rozszerzenie = 'jpg' )
  24.       {
  25.         if ( !is_file( $plik ) )
  26.             exit( 'Nie ma takiego pliku!' );
  27.  
  28.         switch ( $rozszerzenie )
  29.         {
  30.             default:
  31.             case 'jpg':
  32.             case 'jpeg':
  33.                 $obraz = ImageCreateFromJPEG( $plik );
  34.                 break;
  35.            
  36.             case 'png':
  37.                 $obraz = ImageCreateFromPNG( $plik );
  38.                 break;
  39.            
  40.             case 'gif':
  41.                 $obraz = ImageCreateFromGIF( $plik );
  42.                 break;
  43.         }
  44.         return $obraz;
  45.       }
  46.    
  47.     # metoda do tworzenia nowej grafiki
  48.    public function stworz( $szerokosc, $wysokosc, $kolor = '0,0,0' )
  49.       {
  50.         $obraz = ImageCreate( $szerokosc, $wysokosc );
  51.         # jeśli przekazano parametr kolor, wypełnij obrazek tym kolorem
  52.        if ( isset( $kolor ) )
  53.             $this->kolor( $obraz, $kolor );
  54.         return $obraz;
  55.       }
  56.    
  57.     # metoda do wyświetlania przekazanej jej grafiki
  58.    public function wyswietl( $obraz, $rozszerzenie, $jakosc = NULL )
  59.       {
  60.         switch ( $rozszerzenie )
  61.         {
  62.             default:
  63.             case 'jpg':
  64.             case 'jpeg':
  65.                 header( 'Content-type: Image/' . $rozszerzenie );
  66.                 ImageJPEG( $obraz, NULL, ( isset( $jakosc ) ? $jakosc : 100 ) );
  67.                 break;
  68.            
  69.             case 'png':
  70.                 header( 'Content-type: Image/' . $rozszerzenie );
  71.                 ImagePNG( $obraz, NULL, ( isset( $jakosc ) ? $jakosc : 9 ) );
  72.                 break;
  73.            
  74.             case 'gif':
  75.                 header( 'Content-type: Image/' . $rozszerzenie );
  76.                 ImageGif( $obraz );
  77.                 break;
  78.         }
  79.       }
  80.    
  81.     # metoda do zapisywania na dysku przekazanego obrazka
  82.    public function zapisz( $obraz, $rozszerzenie, $sciezka, $jakosc = NULL )
  83.       {
  84.         switch ( $rozszerzenie )
  85.         {
  86.             default:
  87.             case 'jpg':
  88.             case 'jpeg':
  89.                 ImageJPEG( $obraz, $sciezka, ( isset( $jakosc ) ? $jakosc : 100 ) );
  90.                 break;
  91.            
  92.             case 'png':
  93.                 ImagePNG( $obraz, $sciezka, ( isset( $jakosc ) ? $jakosc : 9 ) );
  94.                 break;
  95.            
  96.             case 'gif':
  97.                 ImageGIF( $obraz, $sciezka );
  98.                 break;
  99.         }
  100.       }
  101.    
  102.     # meotda dodająca na obrazek tekst
  103.    public function tekst( $obraz, $rozmiar, $pochylenie, $x, $y, $kolor, $czcionka, $tekst )
  104.       {
  105.         ImageTTFText( $obraz, $rozmiar, $pochylenie, $x, $y, $this->kolor( $obraz, $kolor ), $czcionka, $tekst );
  106.       }
  107.    
  108.     # metoda do wygodnego definiowania koloru
  109.    public function kolor( $obraz, $rgb = '0,0,0' )
  110.       {
  111.         $kolory = explode( ',', $rgb );
  112.         if ( isset( $kolory[3] ) )
  113.             return ImageColorAllocateAlpha( $obraz, $kolory[0], $kolory[1], $kolory[2], $kolory[3] );
  114.         else
  115.             return ImageColorAllocate( $obraz, $kolory[0], $kolory[1], $kolory[2] );
  116.       }
  117.    
  118.     # metoda do rysowania figur i liń
  119.    public function rysuj( $obraz, $ksztalt, $kolor, $wypelnienie = false, $szerokosc, $wysokosc, $x, $y )
  120.       {
  121.         $kolor = $this->kolor( $obraz, $kolor );
  122.         switch ( $ksztalt )
  123.         {
  124.             default:
  125.             case 'linia':
  126.                 ImageLine( $obraz, $szerokosc, $wysokosc, $x, $y, $kolor );
  127.                 break;
  128.            
  129.             case 'prostokat':
  130.                 if ( $wypelnienie )
  131.                     ImageFilledRectangle( $obraz, $szerokosc, $wysokosc, $x, $y, $kolor );
  132.                 else
  133.                     ImageRectangle( $obraz, $szerokosc, $wysokosc, $x, $y, $kolor );
  134.                 break;
  135.            
  136.             case 'elipsa':
  137.                 if ( $wypelnienie )
  138.                     ImageFilledEllipse( $obraz, $szerokosc, $wysokosc, $x, $y, $kolor );
  139.                 else
  140.                     ImageEllipse( $obraz, $szerokosc, $wysokosc, $x, $y, $kolor );
  141.                 break;
  142.         }
  143.       }
  144.    
  145.     # metoda pozwalająca rysować bardziej złożone figury
  146.    public function rysuj_wielokat( $obraz, $kolor, $wypelnienie, $punkty, $wierzcholkow )
  147.       {
  148.         $kolor = $this->kolor( $obraz, $kolor );
  149.         if ( $wypelnienie )
  150.             ImagePolygon( $obraz, $punkty, $wierzcholkow, $kolor );
  151.         else
  152.             ImageFilledPolygon( $obraz, $punkty, $wierzcholkow, $kolor );
  153.       }
  154.    
  155.     # metoda zmieniająca proporcjonalnie rozmiar obrazka
  156.    public function zmien_rozmiar( $obraz, $nowa_szerokosc, $nowa_wysokosc )
  157.       {
  158.         $szerokosc     = ImagesX( $obraz );
  159.         $wysokosc      = ImagesY( $obraz );
  160.         $nowa_wysokosc = $wysokosc * $nowa_wysokosc / $wysokosc;
  161.         $nowy_obraz    = ImageCreateTrueColor( $nowa_szerokosc, $nowa_wysokosc );
  162.         ImageCopyResampled( $nowy_obraz, $obraz, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc );
  163.         return $nowy_obraz;
  164.       }
  165.    
  166.     # metoda zmieniająca procentowo rozmiar obrazka
  167.    public function zmien_rozmiar_procentowo( $obraz, $procent )
  168.       {
  169.         $szerokosc      = ImagesX( $obraz );
  170.         $wysokosc       = ImagesY( $obraz );
  171.         $nowa_szerokosc = $szerokosc * $procent;
  172.         $nowa_wysokosc  = $wysokosc * $procent;
  173.         $nowy_obraz     = ImageCreateTrueColor( $nowa_szerokosc, $nowa_wysokosc );
  174.         ImageCopyResampled( $nowy_obraz, $obraz, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc );
  175.         return $nowy_obraz;
  176.       }
  177.    
  178.     # metoda obcinająca obrazek z wyznaczonych stron
  179.    public function gilotyna( $obraz, $x = 0, $y = 0 )
  180.       {
  181.         $szerokosc      = ImagesX( $obraz );
  182.         $wysokosc       = ImagesY( $obraz );
  183.         $nowa_szerokosc = $szerokosc - $x;
  184.         $nowa_wysokosc  = $wysokosc - $y;
  185.         $nowy_obraz     = ImageCreateTrueColor( $nowa_szerokosc, $nowa_wysokosc );
  186.         ImageCopyResampled( $nowy_obraz, $obraz, 0, 0, $x, $y, $szerokosc, $wysokosc, $szerokosc, $wysokosc );
  187.         return $nowy_obraz;
  188.       }
  189.    
  190.     # metoda czyszcząca obrazek z pamięci
  191.    public function wyczysc( $obraz )
  192.       {
  193.         ImageDestroy( $obraz );
  194.       }
  195.    
  196.   }
  197. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement