2016-12-07 46 views
0

我正在爲我的客戶之一開發一個主題。WordPress的 - 如何使用自動調整大小的圖像

自定義主題使用js庫,它讀入特定文件夾,然後使用此文件夾中找到的圖片生成庫。

我的想法是使用uploads文件夾,這樣我的客戶就可以自己管理畫廊而無需我的干預。

WordPress的自動保存多張圖片此文件夾中,但是這很容易解決:

  • 更改上載到改變了所有的大小爲0,以防止調整大小的子文件夾選項

這兩個選項幾乎工作,我說幾乎是因爲我仍然有一個副本保存在我的文件夾與維度768x510。

再說,我可以在這個閉上眼睛,因爲我實際上有另一個想法...

我想使用的JS庫,讓我來創建一個名爲縮略圖子文件夾,該文件夾中添加相同圖片,但在一個小的格式,以幫助加載時間,我想這樣做。

所以這纔是我真正的問題(抱歉長介紹) 是否可以寫一個自定義的功能還是有,讓我說任何插件:

「沒錯,這裏是一個圖片,現在作物它與維度我告訴你(只有一個),不要重命名它(不要在最後附加大小),然後將其移動到此文件夾(縮略圖)「

我還沒有任何代碼,因爲我要求正確的方向,最重要的是,如果這是可能的!

感謝任何建議

+1

是的,絕對有可能! 'php'有一些很好的功能,我會很快發佈一個完整的答案。 – Nytrix

+0

非常感謝你 – Nick

回答

0

是的,這是definitly可能。你可以通過readdir獲得文件,然後你可以通過這樣的事情傳遞給他們。

這是php功能調整大小的示例注意:這只是我鋪設的一些功能。

function resize($path,$x1,$y,$w,$h,$x2,$y2){ 
     $x = getimagesize($path);    
     switch ($x['mime']) { 
      case "image/gif": 
       $img = imagecreatefromgif($path); 
      break; 
      case "image/jpeg": 
       $img = imagecreatefromjpeg($path); 
      break; 
      case "image/png": 
       $img = imagecreatefrompng($path); 
      break; 
     } 
     $width = imagesx($img); 
     $height = imagesy($img); 
     $scalerw = ($width/$x2); 
     $scalerh = ($height/$y2); 

     $w = $w * 2; 
     $h = $h *2; 
     $img_base = imagecreatetruecolor($w,$h); 
     $x1 = $x1 * $scalerw; 
     $y = $y * $scalerh; 

     imagecopyresampled($img_base, $img,0,0,$x1,$y,$x2 * 2,$y2 * 2, $width, $height); 

     $path_info = pathinfo($path);  
     switch ($path_info['extension']) { 
      case "gif": 
       imagegif($img_base, $path); 
      break; 
      case "jpeg": 
       imagejpeg($img_base, $path); 
       break; 
      case "png": 
       imagepng($img_base, $path); 
       break; 
      case "jpg": 
       imagejpeg($img_base,$path); 
       break; 
     } 
     imagedestroy($img_base); 
    } 

變量的說明

  • $path =該文件的路徑,因此,從所有圖像進行循環。
  • $x1 =要選擇的圖像部分的x座標。
  • $y1 =要選擇的圖像部分的y座標。
  • $w =要選擇的圖像部分的寬度。
  • $h =要選擇的圖像部分的高度。
  • $x2 =原始圖像
  • $y2的寬度=原始圖像

enter image description here

的高度,使你基本上可以選擇一個這樣的盒子,從原始圖像。但是,然後用php

如何改變保存路徑:

你可以改變路徑,它很容易保存,在你看到switch聲明imagegif或任何其它的代碼的最後一部分。您在那裏看到變量$path,這是它保存的位置(在這種情況下,確切地說,如果找到圖像)。這樣你就可以把它保存到你想要的地方。

我希望這一切都有道理,進一步的問題,請不要猶豫,問。

+1

@Nick我編輯了我的答案,我希望這接近你想要實現的。正如@SeweitHotroyman提到的那樣,'wordpress'中的函數能夠做到這一點。加上一點時間後,它可以在任何地方工作。 – Nytrix

0

u可以使用這個插件Imsanityresize image 你可以學習插件

+0

不幸的是,我並沒有使用插件來調整圖像大小,因爲已經調整了大小,或者我可以輕鬆使用內置的WordPress功能。我需要能夠不重命名並將它們上傳到我的文件夾後,他們上傳 – Nick

+0

檢查[網站] [1]和[本] [2] 。 Wordpress已經提供了幾個你想要的功能 [1]:https://developer.wordpress.org/reference/functions/add_image_size/ [2]:https://developer.wordpress.org/reference/files/wp - 包含/忽略原始/ –

2

你不能使用add_attachmentedit_attachment動作,圖像的保存結束後解僱的運作,使你的縮略圖並保存在你想要的地方?

add_action('add_attachment', 'theme_attachment_handler', 999); 
add_action('edit_attachment', 'theme_attachment_handler', 999); 
... 
function theme_attachment_handler($attachment_id) { 

    $image = wp_get_image_editor($metadata['file']); 
    if (! is_wp_error($image)) { 
     $image->resize(300, 300, true); 
     $image->save('newpath/new_image.jpg'); 
    } 
    // Note you can get all the sizes here too, and cleanup: 
    $metadata = wp_get_attachment_metadata($attachment_id); 
    if(!empty($metadata['sizes'])) { 
     foreach($metadata['sizes'] as $size_name => $size_info) { 
      // delete, move, .... 
     } 
    } 
} 

希望這會有所幫助!