Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: После изменения характеристик изображения изменяется фон картинки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Нужно чтобы фон белый у картинки остался прежним...
Sergey8990
Отправлено: 25 Декабря, 2011 - 02:57:40
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Очень нужно чтобы у картинки белый фон таким же и остался, а не менялся на черный. Помогите пож, вот весь код выкладываю:

class SimpleImage {

var $image;
var $image_type;

function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
$image = new SimpleImage();
$image->load('img/1.png');
$image->resizeToWidth(250);
$image->save('img/2.png');

echo "<img src='img/2.png'>";
(Добавление)
Да и с картинками jpg фон остается прежним, а почему в png меняется на черный?
 
 Top
Panoptik
Отправлено: 25 Декабря, 2011 - 03:16:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




я так подозревая что черный фон появляется у картинок png и возможно у gif. то есть у тех у которых поддерживается альфа-канал. тут могу посоветовать заменить при обработке этих форматов функцию imagecreatetruecolor на imagecreate
а фон там тоже можно добавлять. прост нужно параметры посмотреть. вобщемс попробуйте, а там видно будет.

пысы: в моем варианте альфа канал остается на месте, то есть останется прозрачным где и был изначально.
и еще код нужно обрамлять в специальные теги. будет удобнее читать и вам и остальным


-----
Just do it
 
 Top
Striker
Отправлено: 09 Марта, 2013 - 23:38:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Июль 2011  
Откуда: Киев


Помог: 1 раз(а)

[+]


Конечно для автора уже не актуально, но может кому-то другому пригодиться:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class SimpleImage {
  3.  
  4.    public $image;
  5.    public $image_type;
  6.  
  7.    function load($filename) {
  8.  
  9.       $image_info = getimagesize($filename);
  10.       $this->image_type = $image_info[2];
  11.      
  12.       if( $this->image_type == IMAGETYPE_JPEG ) {
  13.  
  14.          $this->image = imagecreatefromjpeg($filename);
  15.       } elseif( $this->image_type == IMAGETYPE_GIF ) {
  16.  
  17.          $this->image = imagecreatefromgif($filename);
  18.       } elseif( $this->image_type == IMAGETYPE_PNG ) {
  19.          $this->image = imagecreatefrompng($filename);
  20.       }
  21.       return $image_info;                      
  22.    }
  23.    
  24.  
  25.   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
  26.  
  27.    // do this or they'll all go to jpeg
  28.    $image_type=$this->image_type;
  29.  
  30.   if( $image_type == IMAGETYPE_JPEG ) {
  31.      imagejpeg($this->image,$filename,$compression);
  32.   } elseif( $image_type == IMAGETYPE_GIF ) {
  33.      imagegif($this->image,$filename);  
  34.   } elseif( $image_type == IMAGETYPE_PNG ) {
  35.     // need this for transparent png to work          
  36.     imagealphablending($this->image, false);
  37.     imagesavealpha($this->image,true);
  38.     imagepng($this->image,$filename);
  39.   }  
  40.    if( $permissions != null) {
  41.      chmod($filename,$permissions);
  42.    }
  43.    }
  44.    function output($image_type=IMAGETYPE_JPEG) {
  45.  
  46.       if( $image_type == IMAGETYPE_JPEG ) {
  47.          imagejpeg($this->image);
  48.       } elseif( $image_type == IMAGETYPE_GIF ) {
  49.  
  50.          imagegif($this->image);
  51.       } elseif( $image_type == IMAGETYPE_PNG ) {
  52.  
  53.          imagepng($this->image);
  54.       }
  55.    }
  56.    function getWidth() {
  57.  
  58.       return $w = imagesx($this->image);
  59.    }
  60.    function getHeight() {
  61.  
  62.       return $h = imagesy($this->image);
  63.    }
  64.    
  65.    function resizeToHeight($height) {
  66.       $ratio = $height / $this->getHeight();
  67.       $width = $this->getWidth() * $ratio;
  68.       $this->resize($width,$height);    
  69.    }
  70.  
  71.    function resizeToWidth($width) {      
  72.       $ratio = $width / $this->getWidth();
  73.       $height = $this->getheight() * $ratio;
  74.       $this->resize($width,$height);    
  75.    }  
  76.  
  77.    function scale($scale) {
  78.       $width = $this->getWidth() * $scale/100;
  79.       $height = $this->getheight() * $scale/100;
  80.       $this->resize($width,$height);
  81.    }
  82.  
  83.    function resize($width,$height) {
  84.         $new_image = imagecreatetruecolor($width, $height);
  85.         if( $this->image_type == IMAGETYPE_GIF || $this->image_type == IMAGETYPE_PNG ) {
  86.                 $current_transparent = imagecolortransparent($this->image);
  87.                 if($current_transparent != -1) {
  88.                         $transparent_color = imagecolorsforindex($this->image, $current_transparent);
  89.                         $current_transparent = imagecolorallocate($new_image, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
  90.                         imagefill($new_image, 0, 0, $current_transparent);
  91.                         imagecolortransparent($new_image, $current_transparent);
  92.                 } elseif( $this->image_type == IMAGETYPE_PNG) {
  93.                         imagealphablending($new_image, false);
  94.                         $color = imagecolorallocatealpha($new_image, 0, 0, 0, 127);
  95.                         imagefill($new_image, 0, 0, $color);
  96.                         imagesavealpha($new_image, true);
  97.                 }
  98.         }
  99.         imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
  100.         $this->image = $new_image;     
  101.     }
  102. }
  103. ?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB