【问题标题】:Extract thumbnails in PHP在 PHP 中提取缩略图
【发布时间】:2015-10-17 05:41:01
【问题描述】:

我有一个滑块 (flexslider),我用它来以下面 jsfiddle 中所示的形式显示图像...我优化了滑块,以便它提取图像(使用数字命名,例如:12364、50046)根据其名称动态地从某个目录中获取。

JSFIDDLE:https://jsfiddle.net/atkumqpk/1/

图片提取代码:

<?php
function get_slide_images($folder, $images_per_slide = 10, $starts_with = '') {

    $slide_images = false;

    // valid extensions
    $extensions = array(
        "jpg",
        "gif",
        "jpeg",
        "svg",
        "png",
        "bmp",
        "JPG"
    );

    // Implode the extensions array into a string:
    $extensions = implode(',', $extensions);

    if (file_exists($folder)) {
        // Get all the files with a valid extension in $folder:
        // (optionally filtered by $starts_with)
        foreach (glob($folder.'/{'.$starts_with.'}*.{'.$extensions.'}', GLOB_BRACE) as $filename) {
            $slide_images[$filename] = "<img src='{$filename}' alt='{$filename}' />";
        }

        if (!empty($slide_images)) {
            ksort($slide_images);
            $slide_images = array_chunk($slide_images, $images_per_slide);
        }

    }

    return $slide_images;
}
?>

<div id="logo" class="logo" ><img src="logo.png"/></div>
<p class="custom-class"><a href="">Go to the main website</a></p>

<div id="menu" class="menu">
    <ul class="headlines">
         <li id="item1">
        <button>aaaaaaaa</button>
        </li>
        <li id="item2">
            <button>bbbbbbb</button>
        </li>
        <li id="item3">
            <button>ccccccc</button>
        </li>
        <li id="item4">
            <button>dddddddd</button>
        </li>
        <li id="item5">
            <button>eeeeeee eee.</button>
        </li>
        <li id="item6">
            <button>ffffff</button>
        </li>
        <li id="item7">
            <button>ggggggg</button>
        </li>

    </ul>
</div>


<div id="container">
    <div id="first" class="inner-container">
        <div id="item11" class="item">
            <a name="item11"></a>
            <div class="flexslider">
                <ul class="slides">
<?php
$slider_kvp = get_slide_images("images", 10, "1");

/**
* Here we are going to generate the SLIDES
*/
if ($slider_kvp) {

    $slider_list_html = array();

    foreach($slider_kvp as $slider_key => $slide_images) {
        $html_LI_list = "";
        $html_LI_list = "<li>";

        // Go through each image ...
        foreach($slide_images as $image_key => $image_value) {
            $html_LI_list .= $image_value;
        }

        $html_LI_list .= "</li>";
        $slider_list_html[$slider_key] = $html_LI_list;
    }

    // OUR SLIDES!
    $rendered_slider_list_html = implode(' ', $slider_list_html);
    echo "<ul class='slides'>{$rendered_slider_list_html}</ul>";
}
?>

                </ul>
            </div>
        </div>
    </div>
</div>

现在的问题是,当我拥有原始滑块时(在优化它之前),我将它连接到“fancybox”以显示缩略图和隐藏图像。但是现在我不知道如何将它连接到使用 php 提取的图像。

Fancybox 的代码。 JSFIDDLE:http://jsfiddle.net/ny9ytae5/2/

案例:在目录图像(我从中提取图像)中,我有以数字命名的图像(例如:54236),并且对于每个图像都有一个具有相同名称的等效文件夹(例如:对于图像 54236有一个文件夹 54236)。文件夹54236的内容是需要连接到图片54236的缩略图。

stackoverflow 成员“JFK”告诉我,我可以这样做:“$slide_images[$filename] = "&lt;img src='{$filename}' alt='{$filename}' /&gt;"; 可以更改为 $slide_images[$filename] = "&lt;a class='fancybox' data-fancybox-group='thumb1' href='{$filename}'&gt;&lt;img src='{$filename}' alt='{$filename}' /&gt;&lt;/a&gt;"; ...唯一的问题是您将使用与缩略图相同的图像,这将会增加页面加载的开销。"

并建议使用本教程:http://www.picssel.com/create-a-filtered-image-gallery-with-jquery-and-fancybox-part-2-create-image-thumbnails-with-php/

但是我没能成功。 有什么帮助吗?

【问题讨论】:

  • oliverpool 的答案是否有任何原因不起作用?看起来它可以正确使用缩略图作为显示,并带有指向原始图像的链接。

标签: javascript php jquery html


【解决方案1】:

我认为你可以从 this 之类的东西开始

如果你想即时制作,你可以简单地传递高度或宽度(我建议你动态计算另一个,这样你就不会失去比例);如果你想缓存它,只需保存 img 并检查你是否有图像(你可以使用自定义名称,如 title-width-height.jpg 并检查它是否存在)

【讨论】:

    【解决方案2】:

    在“JFK”建议中,您应该将src 属性指向您的缩略图(并将href 属性指向大尺寸图像)

    类似

    $slide_images[$filename] = "<a class='fancybox' data-fancybox-group='thumb1' href='{$filename}'><img src='{$filename}/thumbnail.jpg' alt='{$filename}' /></a>";
    

    因此会立即加载缩略图,但仅在需要时才加载大图。

    【讨论】:

    • 问题是滑块打开文件夹内的图像,然后为滑块中的每个图像指定缩略图(在具有相同图像名称的文件夹内)。但是,您的解决方案是将所有图像(不是子文件夹中的图像)打开为缩略图
    • 我不明白您评论的这一部分:“您的解决方案是将所有图像(不是子文件夹中的图像)打开为缩略图”“打开”在这里是什么意思?它是显示一个包含所有图像的文件夹,还是在分离视图中显示所有图像?
    猜你喜欢
    • 2014-01-22
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2010-10-06
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多