我正在使用 ImageMagick 创建已上传 PDF 的微小 JPG 缩略图。代码工作正常。这是一个 WordPress 小部件,尽管这不一定是 WordPress 特定的。
我不熟悉 ImageMagick,所以我希望有人能告诉我这是否看起来很糟糕或者没有遵循某种最佳实践,或者我是否冒着使服务器崩溃的风险。
具体来说,我的问题是:
- 该图像是否已缓存,或者服务器是否必须在每次有人查看该页面时重新生成该图像?如果它没有被缓存,那么确保服务器不必重新生成缩略图的最佳方法是什么?
- 我尝试为 ImageMagick 创建一个单独的文件夹 (/thumbs) 以将所有图像放入其中,而不是将 WP 上传文件夹与 PDF 图像混淆。尽管我的测试环境中的文件夹有 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 链接到它。
感谢您的任何帮助!