2015-07-27 28 views
18

Tôi có thanh trượt (flexslider) mà tôi đang sử dụng để hiển thị hình ảnh trong biểu mẫu được hiển thị bên dưới jsfiddle ... Tôi đã tối ưu hóa thanh trượt để nó trích xuất hình ảnh (được đặt tên bằng số, ví dụ: 12364, 50046) động từ một thư mục nhất định dựa trên tên của nó.Trích xuất hình thu nhỏ trong PHP

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

Mã để trích xuất hình ảnh:

<?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> 

Bây giờ vấn đề là khi tôi đã có thanh trượt ban đầu (trước khi tối ưu hóa nó) Tôi kết nối nó vào "Fancybox" để hiển thị hình thu nhỏ và hình ảnh ẩn. Tuy nhiên bây giờ tôi không có ý tưởng về cách kết nối nó với những hình ảnh đang được trích xuất bằng cách sử dụng php.

Mã của Fancybox. JSFIDDLE: http://jsfiddle.net/ny9ytae5/2/

Trường hợp: bên trong hình ảnh thư mục (tôi đang trích xuất hình ảnh) tôi có hình ảnh được đặt tên bằng số (ví dụ: 54236) và cho mỗi hình ảnh một thư mục tương đương có cùng tên (ví dụ: : đối với hình ảnh 54236 có một thư mục 54236). Nội dung của thư mục 54236 là hình thu nhỏ cần được kết nối với hình ảnh 54236.

Tôi được thông báo bởi thành viên stackoverflow "JFK" mà tôi có thể thực hiện việc này: "$slide_images[$filename] = "<img src='{$filename}' alt='{$filename}' />"; có thể được thay đổi thành $slide_images[$filename] = "<a class='fancybox' data-fancybox-group='thumb1' href='{$filename}'><img src='{$filename}' alt='{$filename}' /></a>"; ... chỉ vấn đề là bạn sẽ được sử dụng các hình ảnh tương tự như hình ảnh thu nhỏ, mà sẽ được bổ sung thêm một nguyên cần thiết để pageload bạn "

Và đề nghị sử dụng hướng dẫn này:. http://www.picssel.com/create-a-filtered-image-gallery-with-jquery-and-fancybox-part-2-create-image-thumbnails-with-php/

Tuy nhiên tôi không thể làm cho nó làm việc. Bất kỳ trợ giúp nào?

+0

Có bất kỳ lý do nào mà câu trả lời của oliverpool không ' t làm việc? Có vẻ như nó sẽ sử dụng hình thu nhỏ một cách chính xác làm hiển thị với liên kết đến hình ảnh gốc. –

Trả lời

9

Trong "JFK" gợi ý, bạn nên trỏ src tài sản để hình ảnh thu nhỏ của bạn (và để cho các href tài sản cho hình ảnh kích thước lớn)

Something như

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

Do đó hình thu nhỏ sẽ được tải một cách im lặng, nhưng hình ảnh lớn sẽ chỉ được tải khi cần thiết.

+0

giải pháp này không hoạt động – dan

+0

điều là thanh trượt sẽ mở hình ảnh bên trong thư mục, sau đó chỉ định hình thu nhỏ (bên trong một thư mục có cùng tên của hình ảnh) cho mỗi hình ảnh trong thanh trượt. Tuy nhiên giải pháp của bạn là mở tất cả các hình ảnh (không phải là hình ảnh trong thư mục con) dưới dạng hình thu nhỏ – dan

+0

Tôi không hiểu phần này của bình luận của bạn: "giải pháp của bạn đang mở tất cả hình ảnh (không phải hình ảnh trong thư mục con) làm hình thu nhỏ " " mở "có nghĩa là gì ở đây? Có hiển thị thư mục có tất cả hình ảnh hoặc tất cả hình ảnh trong các chế độ xem được phân tách không? – oliverpool

4

Tôi nghĩ rằng bạn có thể bắt đầu với một cái gì đó giống như this

nếu bạn muốn làm cho nó một cách nhanh chóng bạn chỉ có thể vượt qua chiều cao hoặc chiều rộng (tôi đề nghị bạn để tính toán trên bay khác, do đó bạn không mất tỷ lệ); nếu bạn muốn cache nó chỉ cần lưu img và kiểm tra xem bạn có hình ảnh hay không (bạn có thể sử dụng tên tùy chỉnh như title-width-height.jpg và kiểm tra xem nó có tồn tại không)

Các vấn đề liên quan