2011-08-15 7 views
1

jpegs 폴더와이를 관리하기 위해 사용할 수있는 MySQL 데이터베이스가 있습니다. 데이터베이스에는 '이미지'와 'imgID', 'imgTitle', 'imgURL', 'imgDate', 'imgClass', 'imgFamily', & 'imgGender'의 7 개의 필드가 있습니다. 기본 키는 'imgID'이고 인덱스 키는 'imgDate'입니다.PHP를 사용하여 이미지 폴더에서 썸네일 만들기

내가하고 싶은 것은 내 이미지 폴더 (모든 jpegs)를 거쳐 내 웹 페이지의 이미지에 대한 링크를 표시 할 때 사용할 수있는 미리보기 이미지를 만드는 PHP 파일을 만드는 것입니다. 앞으로 더 많은 이미지를 폴더에 추가 할 예정이므로 이미 미리보기 이미지를 만든 이미지의 코드가 두 배로 생성되는 것을 방지하는 것이 좋습니다.

필자가 만난 모든 자료는 이것을 수행하기 위해 gd 이미지 라이브러리를 사용하도록 권장하고 있지만 제안 사항은 공개되어 있습니다.

MySQL과 PHP를 처음 접했을 때 누군가 코드에 대한 도움을 받기를 바랍니다. 내가 시도한 모든 것은 실패했다.

이미지가있는 디렉토리는 사이트 루트에 대한 new_arrivals_img /이며, 축소판은 사이트 루트와 관련하여 new_arrivals_img/thumbnails /에 배치해야합니다.

지금은 사이트를 구축 중이므로 MAMP를 사용하여 로컬로 호스팅하고 있습니다. 이미지에 상대 경로를 찾는 데 문제가 있습니다. new_arrivals_img /를 루트로 설정하는 방법이 있습니까?

+1

사용'명령 행에서 convert' (이미지 매직의 일부) 대량 작업을 수행 할 수 있습니다

는 다음과 같은 스크립트를 사용하여 당신이 php.ini 파일에 충분한 메모리를 할당합니다 당신을위한 전환. 스크립트를 해킹하려고 시도하는 것보다이 방법을 사용하는 것이 훨씬 쉽습니다. http://www.imagemagick.org/script/convert.php –

+0

두 가지 질문. 내 페이지에 링크를 만들 때 어떤 이미지가 어떤 이미지에 속하는지 PHP가 어떻게 알 수 있는지 궁금합니다. 이 솔루션에 대한 조건이 있습니까? 아니면 그 웹 사이트에 이미지를로드합니다 PHP 파일에서 할 것이라고? 둘째, 폴더에 이미지를 더 추가하면 어떻게됩니까? 중복 된 미리보기 이미지가 생성됩니까? – stefmikhail

+1

하위 디렉터리를 사용하십시오. '1.jpg' 원본 이미지는'thumbs/1.jpg'에 들어갑니다. –

답변

4

아마도 ImageMagick은 메모리가 더 좋을지 모르지만 나는 항상 처분 할 수있는 GD가 있으며 항상 나를 위해 일해 왔습니다.

<?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 파일은 Applications/MAMP/conf/php5/MAMP PRO가 아니라 MAMP가 있으므로 PRO를 사용한다면 설명서를 확인해야합니다. php.ini 파일에서'memory_limit'을 찾아 64M과 같은 것으로 변경하고 MAMP를 다시 시작하십시오. 또한 원하는 너비를 기준으로 비례 크기 조정을 수행합니다 (예제 호출에서 100px) –

+0

이봐, 작동했습니다! 자, 한 가지 ... 품질은 실제로별로 좋지 않습니다. 포토샵 등으로 미리보기 이미지를 만드는 것이 더 좋은 아이디어라고 생각하기 시작했습니다. 결국 나는 페이지를 만들기 위해 PHP를 사용하여 더 큰 이미지에 대한 링크로 축소판을 표시하고 싶습니다.거기 에이 포토샵을 통해 위의 스크립트를 사용하여 어떤 이점이 있습니까? 또는 파일 이름이 동일 할 때와 더 관련이 있습니까? 도와 주셔서 감사합니다. – stefmikhail

0

나는 gd를 전혀 사용하지 않을 것이고, 나는 imagemagick을 사용할 것이다. 미리보기 이미지가 훨씬 좋아 보입니다.

+0

정말요? 그게 다름 이니? – stefmikhail

+0

그럼 내가 물어 보겠습니다. PHP는 썸네일을 만드는 좋은 방법입니다. 파일을 사용하여 더 큰 이미지에 대한 링크로 사용할 수 있습니까? 그렇지 않으면 포토샵에서 미리보기 이미지를 만들 수 있습니다. – stefmikhail

관련 문제