PHP:当我保存JPG图像时,文件扩展名始终丢失

我写了一个小脚本来创建目录中所有JPG图像的预览,并将它们保存到另一个目录中。但是文件扩展名.jpg始终丢失。我真的不明白为什么。

foreach( glob(dirname(__FILE__)."/../../img/plakate/full/*.jpg") as $img ){

  // key
  $key = basename($img,'.jpg').PHP_EOL;

  // save preview
  $thumb = new Imagick($img);
  $thumb->setImageCompression(Imagick::COMPRESSION_JPEG);
  $thumb->setImageCompressionQuality(10);
  $thumb->resizeImage(50,Imagick::FILTER_LANCZOS,1);
  $thumb->writeImage("lib/img/plakate/preview/{$key}.jpg");
  $thumb->destroy();

}

我也尝试过这样做,结果相同:

foreach( glob(dirname(__FILE__)."/../../img/plakate/full/*.jpg") as $img ){

  // key
  $key = basename($img,1);
  $thumb->setImageFormat('jpeg');
  file_put_contents ("lib/img/plakate/preview/{$key}.jpg",$thumb);
  $thumb->destroy();

}

正如我所见,一切正常–仅缺少文件扩展名。 :(

zyw52718 回答:PHP:当我保存JPG图像时,文件扩展名始终丢失

您可以直接使用它代替basename

$explodedPath = explode(DIRECTORY_SEPARATOR,$img);
$fileName = $explodedPath[count($explodedPath) - 1];

pathinfo

$pathParts = pathinfo($img);
$fileName = "{$pathParts['filename]}{$pathParts['extension']}"
,

您的代码$key = basename($img,'.jpg').PHP_EOL;的末尾有一个PHP_EOL,表示该行到此结束,在汇编文件名时“丢弃”该行之后的所有内容。

$key = basename($img,'.jpg').PHP_EOL;更改为$key = basename($img,'.jpg');,以附加文件扩展名。

本文链接:https://www.f2er.com/2408765.html

大家都在问