Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Считать обложку (картинку) с mp3-файла


Автор: numerovan 1.5.2013, 14:15
Здравствуйте.
Кто нибудь знает как можно считать файл-картинку, каторая вложена как мета-тег в mp3 ?
Пробывал разными способами, но стронние расширения для php в осн. расчитаны на считывания текстовой информации, с картинкой так и не разобрался.
Есть варианты ?

Автор: numerovan 2.5.2013, 00:10
ни ужели ни кто не знает как выцепить картинку с мета-данных музыкального файла ?

Решил задачу, сейчас её оформлю и выложу сюда.

Автор: numerovan 2.5.2013, 00:58
Качаем доп. библеотеку отсюдова http://getid3.sourceforge.net

Далее решение:
Код

$value = "fail.mp3";
$getID3 = new getID3; 
            
            $getID3->analyze($value); 
            if (isset($getID3->info['id3v2']['APIC'][0]['data'])) { 
                $cover = $getID3->info['id3v2']['APIC'][0]['data']; 
            } elseif (isset($getID3->info['id3v2']['PIC'][0]['data'])) { 
                $cover = $getID3->info['id3v2']['PIC'][0]['data']; 
            } else { 
                $cover = null; 
            } 
            
            if (isset($getID3->info['id3v2']['APIC'][0]['image_mime'])) { 
                $mimetype = $getID3->info['id3v2']['APIC'][0]['image_mime']; 
            } else { 
                $mimetype = 'image/jpeg'; // or null; depends on your needs 
            } 
            
            if (!is_null($cover)) { 
                // -------------> Можно вывести в браузер картинку 
                /*header("Content-Type: " . $mimetype); 
            
                 if (isset($getID3->info['id3v2']['APIC'][0]['image_bytes'])) { 
                    header("Content-Length: " . $getID3->info['id3v2']['APIC'][0]['image_bytes']); 
                 } 
                
                echo($cover);*/

                // ------------> но в моей задачие лучше сохранить как файл для дальнейшего использования
                $fp = fopen("pic.jpg", "w"); // пролистав до сотни файлов, увидил что картинка в осн. в jpg, поэтому создаю файл в jpg
                fwrite($fp, $cover);
                fclose($fp);
                
                 // ----------> Если header() не вызывать, то покажуться данные картинки в двоичном коде, каторую можно будет спокойно записать в базу данных и после уже выводить из базы
            }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)