вот короче картинка, получаемая после шаманских действий в gd2. Берется подложка-фон (черная с градиентом, ну или другой цвет) и на эту картинку копируется флаг страны. Причем, на самом флаге нет этой точки . Думается, что это хрень происходит от того что на gif наносится jpg , хотя может ошибаюсь. Хотя "дырявым" флаг не может быть, так как jpg же прозрачности не имеет, но тут она появляется чегото. Мож гдето мелочь пропустил или не заюзал какуюто функцию. все бабахается через imagecopyresampled, imagecreatefromgif (jpeg).
можно посоветовать вначале конвертнуть флаг в жпег вручную и попробовать так. а ещё попробовать с другими гиф-ами
Апельсин Я пользуюсь IrfanView :-D вручную - я имел в виду через другую прогу, чтобы понять как работает с жпег. А так... вроде нужно открыть изображение в исходном формате, а затем сохранить в необходимом. Но точно не уверен.
Apple Да код ничем не примечателен, уже не раз такое делал. PHP: <?php $fon = imagecreatefromgif($_SERVER['DOCUMENT_ROOT'].'/img/vote/'.$size.'_'.$color.'.gif'); $white = imagecolorallocate($fon,255,255,255); if($size == 1) { imagettftext($fon,11,0,3,13,$white,$_SERVER['DOCUMENT_ROOT'].'/other/fonts/arial.ttf','Голосуй ЗА!'); } else { $bg = imagecreatefromgif($_SERVER['DOCUMENT_ROOT'].'/img/vote/bg.gif');//надпись begame $flag = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/img/country_flags/'.$serv['img']); imagecopyresampled($fon,$bg,//ссылка на новосозданное изобр., ссылка на закаченное изобр. 2,0,//х-коорд. на новосозданном, куда будем вставлять. у-коорд. 0,0,//х-коорд. на закачанном, с которой будем копировать 60,19,//размеры в которые будем вписывать вставляемую картинку 60,19//ширина и высота закачанной картинки, которую будем копировать ); imagecopyresampled($fon,$flag,64,2,0,0,20,14,20,14); imagettftext($fon,9,0,88,14,$white,$_SERVER['DOCUMENT_ROOT'].'/other/fonts/arial.ttf',mb_substr($serv['name'],0,30,'UTF-8').'...'); imagedestroy($flag); imagedestroy($bg); } header ("Content-type: image/gif"); imagegif($fon);
Попробуй отдать самый конечный файл в другом формате - png. Чувствую я, что это может решить проблему. Замени imagegif на imagepng. По-моему там какие-то заёбы оптимизатора.
Apple Да, в png - точка пропала. Но это костыль, а не решение проблемы)) В гифе никак не отработать рисунок без искажений?
Нет, это как раз решение. Можно попробовать через ImageMagic делать, но точка, скорее всего, относится к глюкам работы оптимизатора. Он мозг ебет везде, даже в фотошопе при неверных настройках. Как альтернативное решение - работа с палитрой, но оно надо? Вот сделал: http://lastnote.ru/draw.php И тут же GIF: http://lastnote.ru/drawGIF.php Опять мозги ебет. Для GIF это нормально, я этот формат недолюбливаю.
Я чето думал что выдавать картинку надо в том формате, в котором она создана, типа если через imagecreatefromgif создал, то и в гифе надо вывести. Таки придется юзать png. Спасибос
Неа, он всё равно перерисовывает. Он же работает с копией в памяти, на неё накладывает в сыром виде (размер * высота * ширина), а потом, используя оптимизатор, делает конфетку. Так вот формат с форматом GIF возникают траблы у глупых обработчиков вроде GD. Я всегда делаю PNG, он мне импонирует =) Та не за что, для этого я и тут.
Кстати, код http://lastnote.ru/draw.php : PHP: <?php $imageBar = imagecreatefrompng("./bar.png"); $imageFlag = imagecreatefromgif("./ukraine.gif"); // Размеры линейки $imageBarX = imagesx($imageBar); $imageBarY = imagesx($imageBar); // Размеры флажка $imageFlagX = imagesx($imageFlag); $imageFlagY = imagesx($imageFlag); // Уменьшает с предварительными рассчетами (для упрощения) imagecopyresampled( $imageBar, $imageFlag, 3, 3, 0, 0, $imageFlagX, ($imageFlagY - 8), $imageFlagX, $imageFlagY ); header("Content-type: image/png"); imagepng($imageBar); imagedestroy($imageBar); imagedestroy($imageFlag); ?>
Видишь суслика? Нет. И я не вижу. А он есть ))) antonn уже исправлено. Картинка с сайта берется, потому сама обновилась и уже без точки тут в теме отображается