0

WideImage にサムネイルを作成させようとすると (存在するかどうかを確認した後):

    public function printSummaryArticle($article, $copy) {
    // create a thumbnail for the image as per the row data if one does not exist
    if (!file_exists('/images/articles/thumbs/th_' . $article['image'])) {
        $image_handle = imagecreatefromjpeg(Config::getAbsPath() . '/images/articles/' . $article['image']);
        // WideImage plugin
        WideImage::load($image_handle)->resize(300, 200)->saveToFile(Config::getAbsPath() . '/images/articles/thumbs/th_' . $article['image']);
    }
    // echo the thumbnail just created
    echo
        '<div class="summary_article"><img src="/images/articles/thumbs/th_'
        . $article['image']
        . '">';
}

次のエラーが表示されます。

Warning: imagejpeg(/images/articles/thumbs/th_037.jpg): failed to open stream: No such file or directory in /home2/obmonco1/public_html/gulfinsight/lib/omc_frmwrk/plugins/WideImage/Mapper/JPEG.php on line 39

Fatal error: Uncaught exception 'WideImage_UnknownErrorWhileMappingException' with message 'WideImage_Mapper_JPEG returned an invalid result while saving to /images/articles/thumbs/th_037.jpg' in /home2/obmonco1/public_html/gulfinsight/lib/omc_frmwrk/plugins/WideImage/Image.php:164 Stack trace: #0 /home2/obmonco1/public_html/gulfinsight/lib/omc_frmwrk/bespoke/DisplayEngine.php(181): WideImage_Image->saveToFile('/images/article...') #1 /home2/obmonco1/public_html/gulfinsight/lib/omc_frmwrk/bespoke/PageTemplate.php(70): DisplayEngine->printSummaryArticle(Array, Object(GetCopy)) #2 /home2/obmonco1/public_html/gulfinsight/index.php(100): PageTemplate->homePage() #3 {main} thrown in /home2/obmonco1/public_html/gulfinsight/lib/omc_frmwrk/plugins/WideImage/Image.php on line 164

絶対パスを使用する必要がありますが、パスの「ルート」部分 ( Config::getAbsPath() )の有無にかかわらず機能しません。上記のように、最初に画像ハンドラーを作成する代わりに、画像に直接アクセスすることも試みました。

出力メソッドを使用して画像を直接出力しようとすると:

    public function printSummaryArticle($article, $copy) {
    // create a thumbnail for the image as per the row data if one does not exist
    if (!file_exists('/images/articles/thumbs/th_' . $article['image'])) {
        $image_handle = imagecreatefromjpeg(Config::getAbsPath() . '/images/articles/' . $article['image']);
        // WideImage plugin
        WideImage::load($image_handle)->resize(300, 200)->output('jpeg');
    }
    // echo the thumbnail just created
    echo
        '<div class="summary_article"><img src="/images/articles/thumbs/th_'
        . $article['image']
        . '">';
}

次のエラーが表示されます。

Warning: Cannot modify header information - headers already sent by (output started at D:\Open Media Collective\Projects\Gulf Insight\web\publish\lib\omc_frmwrk\bespoke\DisplayEngine.php:130) in D:\Open Media Collective\Projects\Gulf Insight\web\publish\lib\omc_frmwrk\plugins\WideImage\Image.php on line 198

画像のバイナリデータが続きます

私はすべてのphpファイルを開いてチェックしました.phpタグの開閉の前後に空白を探す必要があります..出力バッファを使用したくありません。

編集:言及するのを忘れていましたが、画像、記事、およびサムフォルダーのアクセス許可を777に設定しました. 同じエラー。

追加要求:

「39行目のWideImage/Mapper/JPEG.php」

    return imagejpeg($handle, $uri, $quality);

ただし、ライブラリに触れる必要はありません。ファイル、localhost、およびリモートホストへの絶対パスを指定してみました。違いはありません。画像へのパスが正しいことはわかっています。これが、エラーが意味をなさない理由です。

4

1 に答える 1

1

解決済み:

問題のある行は次のとおりです。

WideImage::load($image_handle)->resize(300, 200)->saveToFile('/images/articles/thumbs/th_' . $article['image']);

画像ハンドラーだけでなく、ここでもフルパス (ルート: Config::getAbsPath() を含む) を使用する必要がありました。

于 2013-01-08T11:47:20.253 に答える