2011-08-15 167 views
1

我有一個jpegs文件夾和一個我希望用來管理它們的MySQL數據庫。該數據庫有一個表:'圖像'和7個字段:'imgID','imgTitle','imgURL','imgDate','imgClass','imgFamily',&'imgGender'。主鍵是'imgID',索引鍵是'imgDate'。使用PHP從一個圖像文件夾創建縮略圖

我想要做的是創建一個PHP文件,它將通過我的圖像文件夾(所有jpeg),並創建它們的縮略圖,然後可以在顯示鏈接到我的網頁上的圖像時使用它。由於我將來會在該文件夾中添加更多圖像,因此防止代碼創建已創建縮略圖的圖像的雙倍將是一件好事。

我遇到的所有文獻都建議使用gd圖像庫來做到這一點,但我願意接受建議。

因爲我是MySQL和PHP的新手,我希望有人可以幫我解決這個問題。我嘗試過的所有東西都失敗了。

圖像所在的目錄是new_arrivals_img /相對於網站根目錄,並且縮略圖應放置在new_arrivals_img /縮略圖/相對於網站根目錄。

現在我正在建設該網站,因此使用MAMP在本地託管它。我有一些問題想出我的圖像的相對路徑。有沒有辦法將new_arrivals_img /設置爲根?

+1

使用'在命令行上convert'(Imagemagik的一部分),它可以做批量轉換爲你。用這種方法做起來要比嘗試將腳本拼湊起來要容易得多:http://www.imagemagick.org/script/convert.php –

+0

有兩個問題。我想知道在我的頁面上創建鏈接時,php如何知道哪個縮略圖屬於哪個圖像。這個解決方案是否有這個條件?或者,這將在php文件中完成,該文件將加載網站上的圖像?其次,當我將更多圖像添加到文件夾時會發生什麼?它會創建重複的縮略圖嗎? – stefmikhail

+1

使用子目錄。 '1.jpg'原始圖像進入'thumbs/1.jpg'。 –

回答

4

據說imagemagick在內存上更好,但我總是有GD在我的處置,它一直爲我完成這項工作。確保你在你的php.ini分配足夠的內存

然後使用類似下面的腳本:

<?php 
function createThumbs($pathToImages, $pathToThumbs, $thumbWidth) 
{ 
    // open the directory 
    $dir = opendir($pathToImages); 

    // loop through it, looking for any/all JPG files: 
    while (false !== ($fname = readdir($dir))) { 
    // parse path for the extension 
    $info = pathinfo($pathToImages . $fname); 
    // continue only if this is a JPEG image 
    if (strtolower($info['extension']) == 'jpg') 
    { 
     echo "Creating thumbnail for {$fname} <br />"; 

     // load image and get image size 
     $img = imagecreatefromjpeg("{$pathToImages}{$fname}"); 
     $width = imagesx($img); 
     $height = imagesy($img); 

     // calculate thumbnail size 
     $new_width = $thumbWidth; 
     $new_height = floor($height * ($thumbWidth/$width)); 

     // create a new temporary image 
     $tmp_img = imagecreatetruecolor($new_width, $new_height); 

     // copy and resize old image into new image 
     imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

     // save thumbnail into a file 
     imagejpeg($tmp_img, "{$pathToThumbs}{$fname}"); 
    } 
    } 
    // close the directory 
    closedir($dir); 
} 
// call createThumb function and pass to it as parameters the path 
// to the directory that contains images, the path to the directory 
// in which thumbnails will be placed and the thumbnail's width. 
// We are assuming that the path will be a relative path working 
// both in the filesystem, and through the web for links 
createThumbs("new_arrivals_img/","new_arrivals_img/thumbnails/",100); 
?> 

http://www.webcheatsheet.com/php/create_thumbnail_images.php

+0

我該如何去分配php.ini中的內存?在使用MAMP作爲本地主機的情況下是否發生了這種變化?最後,此代碼是否允許在動態創建鏈接時使用縮略圖和圖像之間的某種連接? – stefmikhail

+1

MAMP中的php.ini文件在(我認爲)應用程序/ MAMP/conf/php5 /我有MAMP,而不是MAMP PRO,所以如果你使用PRO,你必須檢查手冊。在你的php.ini文件中找到'memory_limit'並將其改爲64M之類的東西,然後重新啓動MAMP。此外,這根據您所需的寬度進行比例調整大小(示例調用中爲100px) –

+0

嘿,它工作!現在,有一件事......質量真的不是很好。我開始認爲用photoshop或類似的東西創建縮略圖可能是一個更好的主意。最終我想顯示縮略圖作爲使用php創建頁面的較大圖像的鏈接。使用上面的腳本通過Photoshop這個有什麼好處嗎?還是它有更多的文件名是相同的?我感謝您的幫助。 – stefmikhail

0

我根本不會使用gd,我會使用imagemagick。縮略圖看起來會更好。

+0

真的嗎?它有多大的不同? – stefmikhail

+0

然後讓我問你。使用PHP來創建縮略圖是一個好方法嗎?它會允許它們將文件用作更大圖像的鏈接嗎?否則我可以在photoshop中創建縮略圖。 – stefmikhail

相關問題