ФорумРазработкаКлиентская сторонаВерстка и оформление → CSS фильтром "задизейблить" иконки

CSS фильтром "задизейблить" иконки

  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 25 августа 2009 г. 19:01, спустя 13 минут 10 секунд

    aivee, хамить не надо :)

    md5, подскажите, пжлст, кодовую фразу … я терминологии не знаю - не знаю. что искать в документации. (если про GD)
    А если Вы про фильтры CSS, которые только IE понимает - то их нафиг.
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 августа 2009 г. 19:05, спустя 4 минуты 20 секунд

    ну насколько я понял из скринов с ворда — тут надо всего лишь менять opacity у картинки
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 августа 2009 г. 19:08, спустя 3 минуты 25 секунд

    AndryG, http://flourishlib.com/docs/fImage
    Сапожник без сапог
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 26 августа 2009 г. 11:46, спустя 16 часов 38 минут

    phpdude, Вытащил из класса нужный метод.
    <?php
    // http://flourishlib.com/browser/fImage.php
     header("Content-type: image/png");
     $file   = 'test.png';
     $mode = isset($_GET['m']) ? $_GET['m'] : '0';
     
     //Выводим просто иконку
     if(0 == $mode){
       readfile($file);
       exit();
     }
     
     $gd_res              = imagecreatefrompng($file);
     list($width,$height) = getimagesize($file);
     $new_gd_res          = imagecreate($width,$height);

     // Create a palette of grays
     $grays = array();
     for ($i=0; $i < 256; $i++) {
        $grays[$i] = imagecolorallocate($new_gd_res, $i, $i, $i);
     }

     // Loop through every pixel and convert the rgb values to grays
     for ($x=0; $x < $width; $x++) {
       for ($y=0; $y < $height; $y++) {
         $color = imagecolorat($gd_res, $x, $y);
         $red   = ($color >> 16) & 0xFF;
         $green = ($color >> 8) & 0xFF;
         $blue  = $color & 0xFF;

         // Get the appropriate gray (http://en.wikipedia.org/wiki/YIQ)
         $yiq = round(($red * 0.299) + ($green * 0.587) + ($blue * 0.114));
         imagesetpixel($new_gd_res, $x, $y, $grays[$yiq]);
       }
     }
                   
       if(1 == $mode) { // выводим необработанную
         imagepng($gd_res);
       }else{           // выводим после обработки
         imagepng($new_gd_res);      
       }
    ?>

    И запускаем сиё:
    <style>
    img {
     border:solid 1px #000;
     background-color: #888;
    }
    </style>
    <img src="/icon.php?m=0">  
    <img src="/icon.php?m=1">  
    <img src="/icon.php?m=2">

    Три варианта выдачи картинки:
    оригинал картинки
    через GD без обработки
    через GD с обработкой

    Фон и рамка - дабы видно было прозрачность и границы рисунка.

    Фигня полная …

    md5, недостаточно здесь прозрачности. Здесь нужно цвета убрать, и, кажись, не просто привести в оттенки серого … присмотритесь к неактивным иконкам в приложениях.

    Спустя 22 сек.
    В приложении результат работы скрипта
    1. 1_11.png (115)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 26 августа 2009 г. 11:48, спустя 1 минуту 18 секунд

    AndryG, там неопределен альфа цвет ..
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 26 августа 2009 г. 13:08, спустя 1 час 20 минут 8 секунд

    phpdude, альфа не цвет, альфа - канал
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 26 августа 2009 г. 13:26, спустя 17 минут 44 секунды


    phpdude, альфа не цвет, альфа - канал
    да я знаю что ты меня ненавидищь :(
    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 26 августа 2009 г. 16:00, спустя 2 часа 34 минуты 40 секунд

    AndryG, поставь XnView, там есть мультипреобразования (выбираешь папку с картинками и назначаешь нужные преобразования)
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 26 августа 2009 г. 16:02, спустя 1 минуту 43 секунды

    прозрачный цвет :D
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 26 августа 2009 г. 17:01, спустя 58 минут 36 секунд

    <?php
    // http://flourishlib.com/browser/fImage.php
     header("Content-type: image/png");
     $file = 'test.png';
     $mode = isset($_GET['m']) ? $_GET['m'] : '0';
     
     //Выводим просто иконку
     if(0 == $mode){
       readfile($file);
       exit();
     }
     
     $gd_res              = imagecreatefrompng($file);
     list($width,$height) = getimagesize($file);
     $new_gd_res          = imagecreate($width,$height);
     // Create a palette of grays
     $grays = array();
     for ($i=0; $i < 256; $i++) {
        $grays[$i] = imagecolorallocate($new_gd_res, $i, $i, $i);
     }

     // Loop through every pixel and convert the rgb values to grays
     for ($x=0; $x < $width; $x++) {
       for ($y=0; $y < $height; $y++) {
         $color = imagecolorat($gd_res, $x, $y);
         $red   = ($color >> 16) & 0xFF;
         $green = ($color >> 8)  & 0xFF;
         $blue  = $color & 0xFF;

         // Get the appropriate gray (http://en.wikipedia.org/wiki/YIQ)
         $yiq = round(($red * 0.299) + ($green * 0.587) + ($blue * 0.114));
         imagesetpixel($new_gd_res, $x, $y, $grays[$yiq]);
       }
     }
     
     //Определяем прозрачный цвет
     $col_transparent     = imagecolortransparent ($gd_res);
     //Пересчитываем его точно так же как и остальные
     $col_transparent_new = round(
         ((($col_transparent >> 16) & 0xFF) * 0.299) +
         ((($col_transparent >> 8)  & 0xFF) * 0.587) +
         (($col_transparent & 0xFF)         * 0.114));
         
     imagecolortransparent($new_gd_res,$grays[$col_transparent_new]);
         
     if(1 == $mode) { // выводим не обработаную
       imagepng($gd_res);
     }else{           // выводим после обработки
       imagepng($new_gd_res);      
     }
    ?>

    Спустя 38 сек.
    Вроде как прозрачность и появилась .. но не вся (на третьем рисунке)
    1. 2_1.png (126)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 26 августа 2009 г. 19:33, спустя 2 часа 32 минуты 9 секунд

    AndryG, доведи до ума этот АЛГОРИТМ, используя IMAGICK. там то уж точно все норм будет ;)
    Сапожник без сапог
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 27 августа 2009 г. 10:27, спустя 14 часов 54 минуты 8 секунд

    Смотрю я на сей код и думаю …
    а нафига сперва забивать забивать серую палитру а потом каждый пиксель перебивать
    Может сразу палитру поправить да и все дела?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!