从while循环拆分图像并在php中重命名

时间:2012-03-02 23:56:41

标签: php for-loop split while-loop

我正在尝试从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 个答案:

答案 0 :(得分: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

但如果只有简单的扩展,那么这个解决方案就足够了。

更好的解决方案是使用SplFileInfo

$fi = new SplFileInfo($image);
$resizedFileName = $fi->getBasename("." . $fi->getExtension()) . "-resized." . $fi->getExtension();
从PHP 5.3.6开始,

SplFileInfo::getExtensions()可用