18

リモートサーバーから画像を取得するときにファイル名を取得する方法は? 元のサイズとファイル名で保存する方法は?

// Take remote image
$img = Image::make('http://image.info/demo.jpg');
// how to save in the img/original/demo.jpg
$img->save(????);

私は干渉( http://image.intervention.io/api/make ) を使用して CakePHP 3 画像の動作を構築します。リモート サーバーから簡単にアップロードできるようにし、元の画像を将来の操作のソースとして保持したいと考えています。

編集

リモート サーバーから取得したファイルの名前を返すIntervention Imageメソッドはありますか。私はphp copy()、basename()を知っています。CakePHPファイルユーティリティも使用できますが、リモートファイルで重複したリクエストが返されます。

4

3 に答える 3

37

response() は、Salines が要求していたような元のファイル名を返しません。これはうまくいくはずです

$path = 'https://i.stack.imgur.com/koFpQ.png';
$filename = basename($path);

Image::make($path)->save(public_path('images/' . $filename));
于 2015-09-29T02:07:58.000 に答える
4

make();メソッドとメソッドを使用して簡単に実行できますresponse();。以下のコードを確認してください。

allow_url_fopenリモートイメージを取得するには、有効にする必要があることに注意してください。

これにより、私のプロフィール写真が表示されます。Laravel Frameworkで使用していない場合は、 return を に置き換えてechoください。

$img = Image::make('https://i.stack.imgur.com/koFpQ.png');
header('Content-Type: image/png');
return $img->response();

役立つ場合は、私の返信に賛成票を投じてください;)

さらにサポートが必要な場合は、お尋ねください。

于 2015-09-28T19:44:58.000 に答える
0

最初にpublicというフォルダー内に新しいフォルダーを作成imagesし、以下のコードを実行して URL から画像をダウンロードし、public\imagesフォルダー内に保存します

        $url = 'http://example.com/image.png';
        $img = public_path('images') . '\\test.png';
        file_put_contents($img, file_get_contents($url));
    
于 2020-11-08T13:07:29.177 に答える