За последние 24 часа нас посетили 19134 программиста и 1642 робота. Сейчас ищут 853 программиста ...

отказывается показывать картинку

Тема в разделе "PHP для новичков", создана пользователем DieselFaka, 2 мар 2014.

  1. DieselFaka

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

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    есть код, который должен отображать .png картинку(можно сказать аватар пользователя), но не работает. Права на все выставлены. Залил на бесплатный хостинг, там все работает, на моём сервере отказывается. Я так понимаю проблема может быть в библиотеках или модулях php?
    Сам код отображения картинки:
    Код (Text):
    1. <?php
    2. class Skin2d {
    3.     private $image = NULL;
    4.  
    5.     function __destructor () {
    6.         if ($this->image != NULL) {
    7.             imagedestroy($this->image);
    8.         }
    9.     }
    10.  
    11.     function AssignSkinFromFile ($file) {
    12.         if ($this->image != NULL) {
    13.             imagedestroy($this->image);
    14.         }
    15.         if(($this->image = imagecreatefrompng($file)) == False) {
    16.             // Error occured
    17.             throw new Exception("Could not open PNG file.");
    18.         }
    19.         if(!$this->Valid()) {
    20.             throw new Exception("Invalid skin image.");
    21.         }
    22.     }
    23.  
    24.     function AssignSkinFromString ($data) {
    25.         if ($this->image != NULL) {
    26.             imagedestroy($this->image);
    27.         }
    28.         if(($this->image = imagecreatefromstring($data)) == False) {
    29.  
    30.             throw new Exception("Could not load image data from string.");
    31.         }
    32.         if(!$this->Valid()) {
    33.             throw new Exception("Invalid skin image.");
    34.         }
    35.     }
    36.  
    37.     function Width () {
    38.         if($this->image != NULL) {
    39.             return imagesx($this->image);
    40.         } else {
    41.             throw new Exception("No skin loaded.");
    42.         }
    43.     }
    44.  
    45.     function Height () {
    46.         if($this->image != NULL) {
    47.             return imagesy($this->image);
    48.         } else {
    49.             throw new Exception("No skin loaded.");
    50.         }
    51.     }
    52.  
    53.     function Valid () {
    54.         return ($this->Width() != 64 || $this->Height() != 32) ? False : True;
    55.     }
    56.  
    57.     function FrontImage ($scale = 1, $r = 255, $g = 255, $b = 255) {
    58.         $newWidth = 16 * $scale;
    59.         $newHeight = 32 * $scale;
    60.  
    61.         $newImage = imagecreatetruecolor(16, 32);
    62.         $background = imagecolorallocate($newImage, $r, $g, $b);
    63.         imagefilledrectangle($newImage, 0, 0, 16, 32, $background);
    64.  
    65.         imagecopy($newImage, $this->image, 4, 0, 8, 8, 8, 8);
    66.          $this->imagecopyalpha($newImage, $this->image, 4, 0, 40, 8, 8, 8, imagecolorat($this->image, 63, 0));
    67.         imagecopy($newImage, $this->image, 4, 8, 20, 20, 8, 12);
    68.         imagecopy($newImage, $this->image, 8, 20, 4, 20, 4, 12);
    69.         imagecopy($newImage, $this->image, 4, 20, 4, 20, 4, 12);
    70.         imagecopy($newImage, $this->image, 12, 8, 44, 20, 4, 12);
    71.         imagecopy($newImage, $this->image, 0, 8, 44, 20, 4, 12);
    72.  
    73.         if($scale != 1) {
    74.             $resize = imagecreatetruecolor($newWidth, $newHeight);
    75.             imagecopyresized($resize, $newImage, 0, 0, 0, 0, $newWidth, $newHeight, 16, 32);
    76.             imagedestroy($newImage);
    77.             return $resize;
    78.         }
    79.  
    80.         return $newImage;
    81.     }
    82.  
    83.     function BackImage ($scale = 1, $r = 255, $g = 255, $b = 255) {
    84.         $newWidth = 16 * $scale;
    85.         $newHeight = 32 * $scale;
    86.  
    87.         $newImage = imagecreatetruecolor(16, 32);
    88.         $background = imagecolorallocate($newImage, $r, $g, $b);
    89.         imagefilledrectangle($newImage, 0, 0, 16, 32, $background);
    90.  
    91.         imagecopy($newImage, $this->image, 4, 0, 24, 8, 8, 8);
    92.         $this->imagecopyalpha($newImage, $this->image, 4, 0, 56, 8, 8, 8, imagecolorat($this->image, 63, 0));
    93.         imagecopy($newImage, $this->image, 4, 8, 32, 20, 8, 12);
    94.         imagecopy($newImage, $this->image, 8, 20, 12, 20, 4, 12);
    95.         imagecopy($newImage, $this->image, 4, 20, 12, 20, 4, 12);
    96.         imagecopy($newImage, $this->image, 12, 8, 52, 20, 4, 12);
    97.         imagecopy($newImage, $this->image, 0, 8, 52, 20, 4, 12);
    98.  
    99.         if($scale != 1) {
    100.             $resize = imagecreatetruecolor($newWidth, $newHeight);
    101.             imagecopyresized($resize, $newImage, 0, 0, 0, 0, $newWidth, $newHeight, 16, 32);
    102.             imagedestroy($newImage);
    103.             return $resize;
    104.         }
    105.  
    106.         return $newImage;
    107.     }
    108.  
    109.     function CombinedImage ($scale = 1, $r = 255, $g = 255, $b = 255) {
    110.         $newWidth = 37 * $scale;
    111.         $newHeight = 32 * $scale;
    112.  
    113.         $newImage = imagecreatetruecolor(37, 32);
    114.         $background = imagecolorallocate($newImage, $r, $g, $b);
    115.         imagefilledrectangle($newImage, 0, 0, 37, 32, $background);
    116.  
    117.         imagecopy($newImage, $this->image, 4, 0, 8, 8, 8, 8);
    118.         $this->imagecopyalpha($newImage, $this->image, 4, 0, 40, 8, 8, 8, imagecolorat($this->image, 63, 0));
    119.         imagecopy($newImage, $this->image, 4, 8, 20, 20, 8, 12);
    120.         imagecopy($newImage, $this->image, 8, 20, 4, 20, 4, 12);
    121.         imagecopy($newImage, $this->image, 4, 20, 4, 20, 4, 12);
    122.         imagecopy($newImage, $this->image, 12, 8, 44, 20, 4, 12);
    123.         imagecopy($newImage, $this->image, 0, 8, 44, 20, 4, 12);
    124.  
    125.         imagecopy($newImage, $this->image, 25, 0, 24, 8, 8, 8);
    126.         $this->imagecopyalpha($newImage, $this->image, 25, 0, 56, 8, 8, 8, imagecolorat($this->image, 63, 0));
    127.         imagecopy($newImage, $this->image, 25, 8, 32, 20, 8, 12);
    128.         imagecopy($newImage, $this->image, 29, 20, 12, 20, 4, 12);
    129.         imagecopy($newImage, $this->image, 25, 20, 12, 20, 4, 12);
    130.         imagecopy($newImage, $this->image, 33, 8, 52, 20, 4, 12);
    131.         imagecopy($newImage, $this->image, 21, 8, 52, 20, 4, 12);
    132.  
    133.         if($scale != 1) {
    134.             $resize = imagecreatetruecolor($newWidth, $newHeight);
    135.             imagecopyresized($resize, $newImage, 0, 0, 0, 0, $newWidth, $newHeight, 37, 32);
    136.             imagedestroy($newImage);
    137.             return $resize;
    138.         }
    139.  
    140.         return $newImage;
    141.     }
    142.  
    143.     function imagecopyalpha($dst, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $h, $bg) {
    144.         for($i = 0; $i < $w; $i++) {
    145.             for($j = 0; $j < $h; $j++) {
    146.  
    147.                 $rgb = imagecolorat($src, $src_x + $i, $src_y + $j);
    148.  
    149.                 if(($rgb & 0xFFFFFF) == ($bg & 0xFFFFFF)) {
    150.                     $alpha = 127;
    151.                 } else {
    152.                     $colors = imagecolorsforindex($src, $rgb);
    153.                     $alpha = $colors["alpha"];
    154.                 }
    155.                 imagecopymerge($dst, $src, $dst_x + $i, $dst_y + $j, $src_x + $i, $src_y + $j, 1, 1, 100 - (($alpha / 127) * 100));
    156.             }
    157.         }
    158.     }
    159. }
    160. ?><?php
    161. $path = $_GET[skinpath];
    162. $test = new Skin2d();
    163. $test->AssignSkinFromFile($path);
    164.  
    165. header('Content-type: image/png');
    166. $img = $test->CombinedImage(5);
    167. imagepng($img);
    168. imagedestroy($img);
    169. ?>
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ахренеть, вы через чтение файла картинку грузите каждый раз? Не проще просто тег с ней отдать и все?
     
  3. DieselFaka

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

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    нет, нужно обязательно через скрипт, т.к. картинка изначально выглядит совсем по другому.
     
  4. imoisey

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

    С нами с:
    27 янв 2014
    Сообщения:
    113
    Симпатии:
    0
    А если сделать 1 раз, чтобы картинка выглядела так, как нужно
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1 раз обработал, сохранил и выводи через img. Каждый раз процессить изображение - сервак не щадить.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Проверь phpinfo установлен gd или нет.
     
  7. DieselFaka

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

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    спасибо, помогло