ImageMagickを使用して、アップロード済みのPDFの小さなJPGサムネイル画像を作成しています。コードは正常に機能します。これはWordPressウィジェットですが、必ずしもWordPress固有ではありません。
私はImageMagickに慣れていないので、これがひどいように見えるか、ある種のベストプラクティスに従っていないか、またはサーバーをクラッシュさせるリスクがあるかどうかを誰かに教えてもらいたいと思っていました。
具体的には、私の質問は次のとおりです。
- その画像はキャッシュされていますか、それとも誰かがページを表示するたびにサーバーが画像を再生成する必要がありますか?キャッシュされていない場合、サーバーがサムネイルを再生成する必要がないことを確認するための最良の方法は何ですか?
- WPアップロードフォルダをPDFの画像で乱雑にするのではなく、ImageMagick用に別のフォルダ(/ thumbs)を作成してすべての画像を入れようとしました。テスト環境のフォルダーに777のアクセス許可があるにもかかわらず、アクセス許可エラーがスローされ続けました。なんで?送信元/宛先ディレクトリは同じである必要がありますか?
- ここで改善が必要なことを間違って/非効率的に行っていますか?
ウィジェット全体はPastebinにあります:http://pastebin.com/WnSTEDm7
関連コード:
<?php
if ( $url ) {
$pdf = $url;
$info = pathinfo($pdf);
$filename = basename($pdf,'.'.$info['extension']);
$uploads = wp_upload_dir();
$file_path = str_replace( $uploads['baseurl'], $uploads['basedir'], $url );
$dest_path = str_replace( '.pdf', '.jpg', $file_path );
$dest_url = str_replace( '.pdf', '.jpg', $pdf );
exec("convert \"{$file_path}[0]\" -colorspace RGB -geometry 60 $dest_path"); ?>
<div class="entry">
<div class="widgetImg">
<p><a href="<?php echo $url; ?>" title="<?php echo $filename; ?>"><?php echo "<img src='".$dest_url."' alt='".$filename."' class='blueBorder' />"; ?></a></p>
</div>
<div class="widgetText">
<?php echo wpautop( $desc ); ?>
<p><a class="downloadLink" href="<?php echo $url; ?>" title="<?php echo $filename; ?>">Download</a></p>
</div>
</div>
<?php }
?>
ご覧のとおり、ウィジェットは、表示されている現在のページに添付されているPDFを取得し、PDFの最初のページの画像を作成して保存し、HTMLでリンクします。
助けてくれてありがとう!