[英]Using ImageMagick to create an image from a PDF…efficiently
我正在使用ImageMagick創建一個已經上傳的PDF的小JPG縮略圖。 該代碼工作正常。 這是一個WordPress小部件,盡管不一定是WordPress特定的。
我不熟悉ImageMagick,所以我希望有人可以告訴我這是否看起來很糟糕,或者沒有遵循某些最佳實踐,或者是否有使服務器崩潰的風險。
我的問題具體是:
整個小部件位於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鏈接到該頁面。
感謝您提供的所有幫助!
當您另存為jpg時,請嘗試在代碼中添加-define:
exec("convert -define jpeg:size=60x60 \"{$file_path}[0]\" -colorspace RGB -geometry 60 $dest_path"); ?>
60x60是圖像的最終尺寸-它所做的全部都是讀取足夠的數據以創建圖像,從而加快了讀取過程。
調整保持寬高比的大小,然后裁剪為60x60
exec("convert -define jpeg:size=60x60 \"{$file_path}[0]\" -colorspace RGB -thumbnail 60x60 -gravity center -crop 60x60+0+0 +repage $dest_path"); ?>
因此,我認為ImageMagick 正在重新生成每個頁面視圖上的縮略圖。 帶有此小部件的頁面將花費額外的幾秒鍾時間。
因此,它現在進行簡單檢查以查看縮略圖是否已經存在:
if ( !file_exists( $dest_path ) ) {
exec("convert \"{$file_path}[0]\" -colorspace RGB -geometry 60 $dest_path");
};
現在,需要大約5秒鍾才能加載的頁面需要2-3。
無論如何,我仍然想知道是否有任何PHP人員認為可以做得更好。
希望這段代碼可以幫助別人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.