За последние 24 часа нас посетили 18653 программиста и 1599 роботов. Сейчас ищут 995 программистов ...

прозрачная точка после gd

Тема в разделе "Вопросы от блондинок", создана пользователем Апельсин, 18 сен 2010.

  1. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    [​IMG]
    вот короче картинка, получаемая после шаманских действий в gd2.
    Берется подложка-фон (черная с градиентом, ну или другой цвет) и на эту картинку копируется флаг страны. Причем, на самом флаге нет этой точки [​IMG].
    Думается, что это хрень происходит от того что на gif наносится jpg , хотя может ошибаюсь. Хотя "дырявым" флаг не может быть, так как jpg же прозрачности не имеет, но тут она появляется чегото.
    Мож гдето мелочь пропустил или не заюзал какуюто функцию.
    все бабахается через imagecopyresampled, imagecreatefromgif (jpeg).
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    можно посоветовать вначале конвертнуть флаг в жпег вручную и попробовать так.
    а ещё попробовать с другими гиф-ами
     
  3. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    гифов 10 штук - на всех эта точка появляется при каждом из флагов :)

    попозжей попробуй
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Gromo
    чтото подходящей функции для конвертирования не нашел. Что юзать то?
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Может хоть код покажешь, а? =)
     
  6. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Апельсин
    Я пользуюсь IrfanView :-D

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

    А так... вроде нужно открыть изображение в исходном формате, а затем сохранить в необходимом.
    Но точно не уверен.
     
  7. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Apple
    Да код ничем не примечателен, уже не раз такое делал.

    PHP:
    1.    
    2. <?php
    3. $fon = imagecreatefromgif($_SERVER['DOCUMENT_ROOT'].'/img/vote/'.$size.'_'.$color.'.gif');
    4.     $white = imagecolorallocate($fon,255,255,255);
    5.    
    6.     if($size == 1)
    7.     {
    8.         imagettftext($fon,11,0,3,13,$white,$_SERVER['DOCUMENT_ROOT'].'/other/fonts/arial.ttf','Голосуй ЗА!'); 
    9.     }
    10.     else
    11.     {
    12.         $bg = imagecreatefromgif($_SERVER['DOCUMENT_ROOT'].'/img/vote/bg.gif');//надпись begame
    13.         $flag = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/img/country_flags/'.$serv['img']); 
    14.        
    15.         imagecopyresampled($fon,$bg,//ссылка на новосозданное изобр., ссылка на закаченное изобр.
    16.                             2,0,//х-коорд. на новосозданном, куда будем вставлять. у-коорд.
    17.                             0,0,//х-коорд. на закачанном, с которой будем копировать
    18.                             60,19,//размеры в которые будем вписывать вставляемую картинку
    19.                             60,19//ширина и высота закачанной картинки, которую будем копировать
    20.                             );
    21.                            
    22.         imagecopyresampled($fon,$flag,64,2,0,0,20,14,20,14);
    23.         imagettftext($fon,9,0,88,14,$white,$_SERVER['DOCUMENT_ROOT'].'/other/fonts/arial.ttf',mb_substr($serv['name'],0,30,'UTF-8').'...');
    24.         imagedestroy($flag);
    25.         imagedestroy($bg);
    26.     }
    27.    
    28.     header ("Content-type: image/gif");
    29.     imagegif($fon);
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Чуть позже гляну.
    Проблема со всеми флагами, ага?
     
  9. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    Тенденция наблюдается, что со всеми.
     
  10. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Попробуй отдать самый конечный файл в другом формате - png.
    Чувствую я, что это может решить проблему.
    Замени imagegif на imagepng.
    По-моему там какие-то заёбы оптимизатора.
     
  11. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Apple
    Да, в png - точка пропала.
    Но это костыль, а не решение проблемы)) В гифе никак не отработать рисунок без искажений?
     
  12. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Нет, это как раз решение.
    Можно попробовать через ImageMagic делать, но точка, скорее всего, относится к глюкам работы оптимизатора. Он мозг ебет везде, даже в фотошопе при неверных настройках. Как альтернативное решение - работа с палитрой, но оно надо?
    Вот сделал:
    http://lastnote.ru/draw.php
    И тут же GIF:
    http://lastnote.ru/drawGIF.php

    Опять мозги ебет.
    Для GIF это нормально, я этот формат недолюбливаю.
     
  13. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Я чето думал что выдавать картинку надо в том формате, в котором она создана, типа если через imagecreatefromgif создал, то и в гифе надо вывести.
    Таки придется юзать png. Спасибос
     
  14. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Неа, он всё равно перерисовывает.
    Он же работает с копией в памяти, на неё накладывает в сыром виде (размер * высота * ширина), а потом, используя оптимизатор, делает конфетку. Так вот формат с форматом GIF возникают траблы у глупых обработчиков вроде GD.
    Я всегда делаю PNG, он мне импонирует =)

    Та не за что, для этого я и тут.
     
  15. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Кстати, код http://lastnote.ru/draw.php :
    PHP:
    1. <?php
    2.  
    3. $imageBar  = imagecreatefrompng("./bar.png");
    4. $imageFlag = imagecreatefromgif("./ukraine.gif");
    5.  
    6. // Размеры линейки
    7. $imageBarX = imagesx($imageBar);
    8. $imageBarY = imagesx($imageBar);
    9.  
    10. // Размеры флажка
    11. $imageFlagX = imagesx($imageFlag);
    12. $imageFlagY = imagesx($imageFlag);
    13.  
    14. // Уменьшает с предварительными рассчетами (для упрощения)
    15.  $imageBar,
    16.  $imageFlag,
    17.  3,
    18.  3,
    19.  0,
    20.  0,
    21.  $imageFlagX,
    22.  ($imageFlagY - 8),
    23.  $imageFlagX,
    24.  $imageFlagY
    25. );
    26.  
    27. header("Content-type: image/png");
    28. imagepng($imageBar);
    29.  
    30. imagedestroy($imageBar);
    31. imagedestroy($imageFlag);
    32.  
    33. ?>
     
  16. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    где там точка-то?
     
  17. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Видишь суслика? Нет. И я не вижу. А он есть :))))

    antonn
    уже исправлено. Картинка с сайта берется, потому сама обновилась и уже без точки тут в теме отображается