Ejemplo n.º 1
0
function getImage($path)
{
    if (!file_exists($path) || !is_readable($path)) {
        return false;
    }
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    switch (strtolower($ext)) {
        case 'png':
        case 'jpg':
        case 'jpeg':
            // physical image file -> redirect
            $path = '/coverroot' . substr($path, strlen('/mnt'));
            $path = str_replace('#', '%23', $path);
            header('Location: ' . $path);
            die;
            // alternative -> return image file contents
            $mime = 'image/' . $ext;
            $data = file_get_contents($path);
            outImage($mime, $data);
            break;
        case 'mp3':
            require_once 'Zend/Media/Id3v2.php';
            try {
                $id3 = new Zend_Media_Id3v2($path);
                if (isset($id3->apic)) {
                    outImage($id3->apic->mimeType, $id3->apic->imageData);
                }
            } catch (Zend_Media_Id3_Exception $e) {
                // catch any parse errors
            }
            require_once 'Zend/Media/Id3v1.php';
            try {
                $id3 = new Zend_Media_Id3v1($path);
                if (isset($id3->apic)) {
                    outImage($id3->apic->mimeType, $id3->apic->imageData);
                }
            } catch (Zend_Media_Id3_Exception $e) {
                // catch any parse errors
            }
            break;
        case 'flac':
            require_once 'Zend/Media/Flac.php';
            try {
                $flac = new Zend_Media_Flac($path);
                if ($flac->hasMetadataBlock(Zend_Media_Flac::PICTURE)) {
                    $picture = $flac->getPicture();
                    outImage($picture->getMimeType(), $picture->getData());
                }
            } catch (Zend_Media_Flac_Exception $e) {
                // catch any parse errors
            }
            break;
        case 'm4a':
            require_once 'Zend/Media/Iso14496.php';
            try {
                $id3 = new Zend_Media_Iso14496($path);
                $picture = $id3->moov->udta->meta->ilst->covr;
                $mime = ($picture->getFlags() & Zend_Media_Iso14496_Box_Data::JPEG) == Zend_Media_Iso14496_Box_Data::JPEG ? 'image/jpeg' : (($picture->getFlags() & Zend_Media_Iso14496_Box_Data::PNG) == Zend_Media_Iso14496_Box_Data::PNG ? 'image/png' : null);
                if ($mime) {
                    outImage($mime, $picture->getValue());
                }
            } catch (Zend_Media_Iso14496_Exception $e) {
                // catch any parse errors
            }
            break;
    }
    return false;
}
Ejemplo n.º 2
0
ini_set('display_errors', '1');
include 'connection.php';
// read current session parameters
session_start();
session_write_close();
// fetch MPD status
$status = _parseStatusResponse(MpdStatus($mpd));
$curTrack = getTrackInfo($mpd, $status['song']);
if (isset($curTrack[0]['Title'])) {
    $status['currentartist'] = $curTrack[0]['Artist'];
    $status['currentsong'] = $curTrack[0]['Title'];
    $status['currentalbum'] = $curTrack[0]['Album'];
    $status['fileext'] = parseFileStr($curTrack[0]['file'], '.');
}
$currentpath = "/mnt/" . findPLposPath($status['song'], $mpd);
//echo $currentpath;
$flac = new Zend_Media_Flac($currentpath);
// Extract picture
if ($flac->hasMetadataBlock(Zend_Media_Flac::PICTURE)) {
    header('Content-Type: ' . $flac->getPicture()->getMimeType());
    echo $flac->getPicture()->getData();
} else {
    $ch = curl_init(ui_lastFM_coverart($status['currentartist'], $status['currentalbum'], $_SESSION['lastfm_apikey']));
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $image = curl_exec($ch);
    curl_close($ch);
    header('Content-Type: ' . mime_content_type($image));
    echo $image;
}