[英]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.