2

APIC 画像を getid3 で mp3 ファイルに書き込もうとしています。これがコードです。

$cover = "/home/user/public_html/artwork/cover.jpg";
$TagData['attached_picture'][]=array(
'picturetypeid'=>2, // Cover. More: module.tag.id3v2.php -> function APICPictureTypeLookup
'description'=>'cover', // text field
'mime'=>'image/jpeg', // Mime type image
'data'=>$cover // Image data
);

しかし、うまくいきません。画像サイズは約1.5MB。サイズを変更する必要がありますか?

どこが間違っていますか?

ありがとう

4

5 に答える 5

1

彼らのウェブサイトにあるデモを見る: http://www.getid3.org/source/demo.write.phps

コードのスニペット:

$fd = fopen($_FILES['userfile']['tmp_name'], 'rb')
$APICdata = fread($fd, filesize($_FILES['userfile']['tmp_name']));
fclose ($fd);

$imagetypes = array(1=>'gif', 2=>'jpeg', 3=>'png');
if (isset($imagetypes[$APIC_imageTypeID])) {
    $TagData['attached_picture'][0]['data']          = $APICdata;
    $TagData['attached_picture'][0]['picturetypeid'] = $_POST['APICpictureType'];
    $TagData['attached_picture'][0]['description']   = $_FILES['userfile']['name'];
    $TagData['attached_picture'][0]['mime']          = 'image/'.$imagetypes[$APIC_imageTypeID];
}

データキーは、画像ファイルへのパスだけでなく、画像コンテンツである必要があるようです。したがって、あなたの場合、次のようになります。

$cover = "/home/user/public_html/artwork/cover.jpg";
$fd = fopen($cover, 'rb')
$APICdata = fread($fd, filesize($coverFile));
fclose ($fd);

$TagData['attached_picture'][]=array(
'picturetypeid'=>2, // Cover. More: module.tag.id3v2.php -> function APICPictureTypeLookup
'description'=>'cover', // text field
'mime'=>'image/jpeg', // Mime type image
'data'=>$APICdata  // Image data
);

注: これはデモ コードをざっと見た直後です。私はこのライブラリを使用したり、このコードをテストしたりしていません。

于 2011-02-05T18:55:20.893 に答える
0

私はこれをソースコードで見つけました:

case 'APIC':
    // 4.14  APIC Attached picture
    // Text encoding      $xx
    // MIME type          <text string> $00
    // Picture type       $xx
    // Description        <text string according to encoding> $00 (00)
    // Picture data       <binary data>

したがって、画像データはバイナリである必要があります。

解決策はここにあります:getid3デモ

于 2011-02-09T08:53:13.347 に答える
0

これは私のために長い間働いています:

    $TagData = array(); //your other tags
    $fd = fopen($albumPath, 'rb');
    $APICdata = fread($fd, filesize($albumPath));
    fclose($fd);

    if($APICdata) {
        $TagData += array(
            'attached_picture' => array(0 => array(
                'data'          => $APICdata,
                'picturetypeid' => '0x03',
                'description'   => 'cover',
                'mime'          => image_type_to_mime_type($albumExifType)
            ))
        );
    }
    //and write the tags to file 
于 2012-11-20T11:59:57.623 に答える
0

GetID3 は、ファイル パスではなく、データを送信するファイルの内容を必要とします。その後、それをファイルに埋め込むことができます。試す

$cover = "/home/user/public_html/artwork/cover.jpg";
$TagData['attached_picture'][]=array(
    'picturetypeid'=>2, // Cover. More: module.tag.id3v2.php -> function APICPictureTypeLookup
    'description'=>'cover', // text field
    'mime'=>'image/jpeg', // Mime type image
    'data'=> file_get_contents($cover) // Image data; not the file name
);

テスト済みで動作しています:)

于 2011-02-07T10:51:59.787 に答える