Şeffaf gif / siyah arka plan?

3 Cevap php

Ben o zaman ben eklemek metin için şeffaf bir arka plan oluşturulan bu gif şeffaf olması varsayalım dışında çalışır ve ben tüm değiştirmek eğer $ konteynere (imagesavealpha vb), malzeme siyah bir arka plan yaratıyor, şu var Bu resmi. Nasıl siyah arka plan kurtulmak hakkında gitmek istiyorsunuz? Temelde bu imza tür resimdir. Seni görmek gerek olduğunu sanmıyorum, hangi çok şeyler yazmak.

  $im = imagecreatefromgif("bg.gif");

  $container = imagecreatetruecolor(400, 160);
  imagesavealpha($im, true);
  imagealphablending($im, false);

  $trans_colour = imagecolorallocatealpha($im, 0, 0, 0, 127);
  $w = imagecolorallocate($container, 255, 255, 255);

  imagefill($im, 0, 0, $trans_colour);

  imagecopymerge($container, $im, 0, 0, 0, 0, 460, 180, 100);

3 Cevap

Ben bir yeni şeffaf truecolour görüntüyü oluşturmak için izin vermek için bu iki işlevlerini kullanın ...

function image_createtruecolortransparent($x,$y) 
{
	$i = imagecreatetruecolor($x,$y);
	$b = imagecreatefromstring(base64_decode(image_blankpng()));
	imagealphablending($i,false);
	imagesavealpha($i,true);
	imagecopyresized($i,$b,0,0,0,0,$x,$y,imagesx($b),imagesy($b));
	return $i;
}

function image_blankpng()
{
	$c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m";
	$c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg";
	$c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN";
	$c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ";
	$c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA";
	$c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII=";

	return $c;
}

İhtiyacınız ne yapmalıyım hangi. Sadece (400, 160) imagecreatetruecolor için işlev çağrısı yerine; image_createtruecolortransparent ile (400, 160); ve her iki işlevi vardır.

The solution below is less complicated than the one you chose. It also addresses the question directly.


$transparencyIndex = imagecolortransparent($imageSrc);
$transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255);

if ($transparencyIndex >= 0) { $transparencyColor = imagecolorsforindex($imageSrc, $transparencyIndex);
}

$transparencyIndex = imagecolorallocate( $imageNew, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue'] ); imagefill($imageNew, 0, 0, $transparencyIndex); imagecolortransparent($imageNew, $transparencyIndex);

GIF imagecopyresampled görüntüyü, () ve imagegif yeniden boyutlandırmak ve saklamak için () sırasıyla kullanılabilir.

Bu sayfa PHP Ağiletişim çok yararlıdır: http://us2.php.net/manual/en/function.imagecolortransparent.php#89927. Ben belirli bir yorumuna bağlı, ama her zaman, en azından çoğu bakmak için iyi bir fikirdir.