0

是否可以将带有任何类型图像(可以是 jpg、png、gif 等)的 url 作为 jpg 保存到 php 中的文件夹中而无需多个步骤(检查扩展名、保存为相同类型并转换为 jpg)?

示例网址

  1. http://jdownloader.org/_media/knowledge/wiki/jdownloader.png?cache=&w=512&h=512 (.PNG)
  2. http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com (.jpg)

许多 url 并不总是包含 imagename.ext 类型的结构。

对于这样的代码(从这里PHP 保存图像文件

$input = 'http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com';
$output = 'google.com.jpg';
file_put_contents($output, file_get_contents($url)); 

是否可以在不检查扩展名的情况下保存任何图像文件类型?我试过

$input = 'URL_string';
$output = 'path/to/folder/name'; // no extensions
file_put_contents($output, file_get_contents($url)); 
imagejpeg($output,"temp.jpg");

干活。我阅读了Create Image From Url Any File TypeSaving image from PHP URL等,但不知道如何获得简单的解决方案。

谢谢你的帮助。

4

3 回答 3

0

作为您的问题的解决方案,请参考下面提到的代码片段

<?php
  $im=imagecreatefromjpeg('http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com');
    header('Content-type:image/jpeg');
    imagejpeg($im);
 ?>

imagecreatefromjpeg 函数用于从文件或 URL 创建图像

php.ini 文件中的 allow_url_fopen 设置也必须设置为 On 才能从 URL 创建图像

有关更多详细信息,请参阅以下 url 中提到的文档

http://php.net/manual/en/filesystem.configuration.php

于 2012-10-31T06:34:26.217 回答
0

作为您的问题的解决方案,请参考下面提到的代码片段

       $h=get_headers('http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com',1);
       $img_content=file_get_contents('http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com');
       $extension='jpg';
      if(!empty($img_content))
      {
    switch($h['Content-type'])
    {
    case 'image/jpeg':
        $extension='jpg';
        break;
    case 'image/gif':
        $extension='gif';
        break;
    case 'image/png':
        $extension='png';
        break;      
    }

file_put_contents('abc.'.$extension,$img_content);

 }
于 2012-10-31T07:30:46.387 回答
0

我想这是不可能的(考虑到所有现有的图像文件类型),但对于最基本的图像文件类型,应该有用于转换的库。

同样对于您尝试过的事情-仅将文件扩展名重命名为.jpg实际上并不能使其成为jpg(例如,IrfanView 在打开此类文件时会警告您并询问您是否要将扩展名更改回正确的扩展名)

于 2012-10-31T07:36:53.397 回答