Разделение изображений из цикла while и переименование в php - PullRequest
1 голос
/ 03 марта 2012

Я пытаюсь получить изображения из цикла while и разделить их на период (.) .., а затем изменить имя изображения на ImageName + -resized. Но я не могу понять, как это сделать. Любая помощь будет принята с благодарностью!

Короче говоря, у меня есть это: image.jpg, и я хочу создать это изображение-resized.jpg: Вот мой код:

<?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 Ответ

1 голос
/ 03 марта 2012

Ну, самое простое решение было бы:

$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

Но если есть только простые расширения, этого решения может быть достаточно.

Лучшим решением было бы использование SplFileInfo:

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

SplFileInfo::getExtensions() доступен с PHP 5.3.6

...