2016-12-18 4 views
1

При повороте изображения с gd + php появляется рамка, и я не знаю, что я сделал не так.Граница появляется при вращении изображения с помощью gd + php

<?php 
$size = 900; 
$img = imagecreate($size, $size); 

imagesavealpha($img, true); 
$color = imagecolorallocatealpha($img, 0, 0, 0, 127); 
imagefill($img, 0, 0, $color); 

$lines_color = imagecolorallocate($img, 0, 0, 0); 

imageline($img, ($size * 0.50), ($size * 0.00), ($size * 0.50), ($size * 1.00), $lines_color); 
imageline($img, ($size * 0.20), ($size * 0.00), ($size * 0.80), ($size * 1.00), $lines_color); 
imageline($img, ($size * 0.00), ($size * 0.20), ($size * 1.00), ($size * 0.80), $lines_color); 
imageline($img, ($size * 0.00), ($size * 0.50), ($size * 1.00), ($size * 0.50), $lines_color); 
imageline($img, ($size * 0.00), ($size * 0.80), ($size * 1.00), ($size * 0.20), $lines_color); 
imageline($img, ($size * 0.20), ($size * 1.00), ($size * 0.80), ($size * 0.00), $lines_color); 

$img = imagerotate($img, 45, 1); 
imagesavealpha($img, true); 
$color = imagecolorallocatealpha($img, 0, 0, 0, 127); 
imagefill($img, 0, 0, $color); 

header("Content-Type: image/png"); 
imagepng($img, 'demo.png'); 

Результат: магическая граница добавил: -/

Image png result

+0

Почему вы используете черный для всех слоев? Нужно ли вам быть черным? если да, то почему вы устанавливаете прозрачность на полную (127)? Почему вы снова заполняете фон после поворота изображения? – EhsanT

ответ

0

Pass прозрачный цвет фона для imagerotate:

$transparent = imagecolortransparent($img, $color); 
$img = imagerotate($img, 45, $transparent); 

 Смежные вопросы

  • Нет связанных вопросов^_^