Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб Мини-скриптик для иконок.

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем blogger2, 10 май 2014.

?

Лайк поставите?;3

  1. не

    52,4%
  2. ДА, ОГРОМНОЕ СПАСИБО!!!!

    47,6%
  1. Автор темы
    blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Всем хаюшки, по совету @Semen4ik решил что-то сделать в паблик для этого форума.
    Ладно, вру, самому понадобилось, теперь уже не надо, решил это выложить.
    Не суть важно, вот в чём фишка:
    К примеру, у вас есть файл с иконками (png/jpg/gif/bmp, не важно).
    Вам нужно вытащить 61 по счету. Известны размеры этих иконок. Просто берем, и вытаскиваем сразу эту иконку по трем методам!
    Вот класс:
    PHP:
    <?php
    class IconHelper{
        private 
    $img;
        private 
    $arr;
        public function 
    __construct($filepath){
            
    $this->img $filepath;
        }
        public function 
    numFromOne($arr){
            
    $i 1;
            
    $array = array();
            foreach(
    $arr as $index=>$value){
                
    $array[$i] = $value;
                
    $i++;
            }
            return 
    $array;
        }
        public function 
    getExtention($filename) {
            return 
    substr(strrchr($fileName'.'), 1);
        }
        public function 
    parseAsImage($id,$size=32){
           
            switch(
    $this->getExtention($this->img)){
                case 
    "png":
                    
    $src imagecreatefrompng($this->img);
                break;
                case 
    "gif":
                    
    $src imagecreatefromgif($this->img);
                break;
                case 
    "jpg":
                    
    $src imagecreatefromjpeg($this->img);
                break;
                case 
    "jpeg":
                    
    $src imagecreatefromjpeg($this->img);
                break;
                default:
                
    $src imagecreatefrompng($this->img);
                break;
            }
           
            list(
    $width$height) = getimagesize($this->img);
           
            
    $dest imagecreatetruecolor($size$size);
            
    imagesavealpha($desttrue);
            
    $color imagecolorallocatealpha($dest000127);
            
    imagefill($dest00$color);

            
    // Копирование
            
    $count_x floor($width $size);
            
    $count_y floor($height $size);               
            
    $count $count_x $count_y;
            
    $array = array();
            
    $i 1;
            for(
    $line 0$line $count_y$line++){                                       
                for(
    $left 0$left $count_x$left++){
                    
    $array[$i] = $left*$size '<::>' $line*$size;
                    
    $i++;
                }
            }   

            list(
    $x,$y) = explode('<::>'$array[$id]);
           
            
    imagecopy($dest$src00$x$y$size$size);
           
            
    // Вывод и освобождение памяти
            
    header('Content-Type: image/png');
            
    imagepng($dest);
            
    imagealphablending($desttrue);        
            
    imagesavealpha($desttrue);
            
    imagepng($destnull10);

            
    imagedestroy($dest);
            
    imagedestroy($src);
        }
        public function 
    parseIcons($size=32$return_as="array"){                   
            
    $file $this->img;                       
            
    $dimension getimagesize($file);
            
    $main_css "display: inline-block; width: {$size}px; height: {$size}px; background: url('{$file}'); margin-bottom: -8px;";                       
            
    $width =  $dimension[0];
            
    $height $dimension[1];                   
            
    $count_x floor($width $size);
            
    $count_y floor($height $size);               
            
    $count $count_x $count_y;                       
            
    $return "";           
            for(
    $line 0$line $count_y$line++){                                       
                for(
    $left 0$left $count_x$left++){
                    
    $return .= "<span style=\"{$main_css}background-position: ".$left*$size."px ".$line*$size."px;\"></span>|";
                }
            }                       
            
    $arr $this->numFromOnearray_slice(explode("|"$return), 0$count) );                       
            
    $this->arr $arr;                   
            
    $this->col $count;
            return (
    $return_as == "array") ? (array) $this->arr : (string) str_replace("|"null$return);
        }
        public function 
    getById($id){
            if(empty(
    $this->arr) || !is_array($this->arr)){ return false; }                       
            return 
    $this->arr[$id];
        }
        public function 
    getNum(){
            return (empty(
    $this->col)) ? false $this->col;
        }
    }
    Вот пример:
    PHP:
    <?php
    include("class.php"); //подключаем файл с моим классом
    $ih = new IconHelper("images/icon.png"); //путь до иконок
    $array $ih->parseIcons(32); //32 - размер иконки
    print_r($array); //вот и наш массив! Делаем, что душе угодно!
    //После вызова parseIcons можно юзать ещё две плюшки:
    echo "Всего иконок: " $ih->getNum();
    echo 
    "<br>Иконка под номером 3:"$ih->getById(3);
    ?>
    UPD!!!! Можно сразу брать картинкой!!!!
    Создаём файл icon.php
    Внутри пишем:
    PHP:
    <?php
    ini_set
    ("display_errors"false);//т.к. хеадер стоит
    include("iconhelper.php");//подключаем класс
    $icon = (int) trim($_GET['id']);    //параметр ID
    $ih = new IconHelper('images/icons.png');    //открываем иконки           
    $ih->parseAsImage($icon);//выводим картинкой c:
    ?>
     
    Последнее редактирование: 10 май 2014
    lexa_kiker, Shockwave, DragoSFire и 3 другим нравится это.
  2. Хостинг MineCraft
    <
  3. zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    В поисках говнокода.
     
  4. DragoSFire

    DragoSFire Старожил Пользователь

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    Во время, как раз со старых текстур паков вырезать собрался. Имперский лойс!
     
    blogger2 нравится это.
  5. Автор темы
    blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Та же проблема)
     
  6. Cyber Owl

    Cyber Owl Старожил Пользователь

    Баллы:
    153
    Лучше бы такое на JS написали.
     
    zuma2 нравится это.
  7. zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    :D если увижу в темах со значком "веб" и ты что-то подобное напишешь как Cyber Owl я тебя транклюкирую нахрен!
     
  8. Cyber Owl

    Cyber Owl Старожил Пользователь

    Баллы:
    153
    Записываете в переменную * картинку, даёте понять, что это изображение + абсолютный путь
    затем вызываешь *.width, *.height.
    Мне это не сложно, но делать реализацию такого простого действия на php...
    Что Вы несёте?
     
    AZoN нравится это.
  9. Semen4ik

    Semen4ik Старожил Пользователь

    Баллы:
    123
    Skype:
    Semenov1215
    Имя в Minecraft:
    Semen4ik
    css по аналогии bootstrap2, не?
     
  10. Cyber Owl

    Cyber Owl Старожил Пользователь

    Баллы:
    153
    А причем тут bootstrap?
     
  11. Semen4ik

    Semen4ik Старожил Пользователь

    Баллы:
    123
    Skype:
    Semenov1215
    Имя в Minecraft:
    Semen4ik
    ну в bootstrap 2 идёт чтение иконок из файла средствами css.
     
  12. Cyber Owl

    Cyber Owl Старожил Пользователь

    Баллы:
    153
    Не Bootstrap, а Glyphicons, Font Awesome.
     
  13. Semen4ik

    Semen4ik Старожил Пользователь

    Баллы:
    123
    Skype:
    Semenov1215
    Имя в Minecraft:
    Semen4ik
    слушай, не придерайся.
    в bootstrap 2 свои иконки были
    у gi и fa шрифтом идут иконки.
    _____________________________________
    upd до меня дошло xD
    полезный скрипт
    но лучше его применять для генерации css файла.
    ибо php не оч быстро работает (такое на js надо)
     
    Последнее редактирование: 11 май 2014
  14. mcdima

    mcdima Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    mcdima
    Чушь не надо нести.
    [​IMG]
     
    blogger2 нравится это.
  15. Автор темы
    blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Да, возможно.
    Но это чтобы вручную не просчитывать background-position, для тех кто ещё не понял.
    Поставьте лайк за работу, не устраивайте обсёр c:[DOUBLEPOST=1415357011,1399769774][/DOUBLEPOST]Ни*** себе я говнокодил..
     
  16. fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Некропостер D:
     
  17. Автор темы
    blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Хахахаххахахаххаха)
    В точку)
     
    Последнее редактирование: 7 ноя 2014
  18. Evan

    Evan Старожил Пользователь

    Баллы:
    123
    вообще говнокод один кодишь, чёт ты падазрительный -.О
     
  19. fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    А ты один? :D
     
  20. Evan

    Evan Старожил Пользователь

    Баллы:
    123
    что я "один"? Один не говнокодю? Я вообще то шуткую тут) :D
     
  21. fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Удиви нас :D
     

Поделиться этой страницей