2012-03-02 2 views
1

while 루프에서 이미지를 가져 와서 마침표 (.) ..로 나눠서 ImageName + 크기로 이미지 이름을 변경하려고합니다. 그러나 나는 이것을하는 방법을 알아낼 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다! image.jpg를 나는이 이미지 resized.jpg을 만들려면 :while 루프에서 이미지를 분할하고 PHP에서 이름 바꾸기

그래서 짧은 내가이가 여기 내 코드입니다 :

<?php 
    $f = $_GET['f']; 
    $h = $_GET['h']; 
    $gp = $_GET['gp']; 
    //Create folder path 
    $path = "Fotos/".$f."/".$h."/".$gp."/"; 
    //Get pictures from database 
    $getfolders = mysql_query("SELECT FolderName, Files FROM Files WHERE FolderDate = '$f' AND FolderHour = '$h' AND FolderName = '$gp'") or die(mysql_error()); 
    //List pictures from database 
    while($row = mysql_fetch_array($getfolders)){ 
     $img = $row['Files']; 
     //Seperate image at period(.) 
     $image = explode('.', $img); 
     //Get image name ----------------Here is where I need help!! 
     for($i = 0; $i < sizeof($image); $i++) 
      { 
      $imag = $image[$i]; 
      } 
     ?> 
    <div class="picture" id="pic"><img src="<?php echo $path; echo $imag ?>" alt="picture" /><?php echo $img?></div> 
     <?php 
     } 
    ?> 

답변

1

음, 가장 간단한 해결책은 다음과 같습니다

$image = explode('.', $img); 
$extension = array_pop($image); 
$resizedFileName = implode('.', $image) . "-resized.{$extension}"; 

는 그러나이 솔루션은 단순한 확장이 있다는 것을, 가정 않습니다

image.jpg => image-resized.jpg // ok 
image.tar.gz => image.tar-resized.gz // not so ok 

그러나 단순한 extensi이있는 경우 이 솔루션으로 충분할 수 있습니다.

더 나은 솔루션 SplFileInfo을 사용하는 것입니다 :

$fi = new SplFileInfo($image); 
$resizedFileName = $fi->getBasename("." . $fi->getExtension()) . "-resized." . $fi->getExtension(); 

SplFileInfo::getExtensions() 사용할 수있는 PHP 5.3.6 이후

+0

너무 감사합니다! – liveandream