自分のドメインに外部イメージをロードしたいと思っています。
コピーしないで自分のドメインにリモートイメージをロードする
私はそれを私のサーバーにカール経由でコピーすることを試みました。しかし、私はそれをコピーせずに欲しい。つまり外部画像の位置はhttp://example.com/image.jpg
です。この画像をサーバにコピーすることなくhttp://examplemydomain.com/image.jpgとしてロードします。任意の提案どのようにPHPでこれを達成するには?
自分のドメインに外部イメージをロードしたいと思っています。
コピーしないで自分のドメインにリモートイメージをロードする
私はそれを私のサーバーにカール経由でコピーすることを試みました。しかし、私はそれをコピーせずに欲しい。つまり外部画像の位置はhttp://example.com/image.jpg
です。この画像をサーバにコピーすることなくhttp://examplemydomain.com/image.jpgとしてロードします。任意の提案どのようにPHPでこれを達成するには?
私の職場では、このようなソープを使用しています。注意:イメージは150x150の正方形に適合するようにサイズが変更されているので、より大きいですアバター。その部分を取り除き、$newwidth
の代わりにwidth
、$height
の代わりに使用してオリジナルを取得してください。私はそれを自分で取り除きますが、それはクリスマスの朝です。私はただの気分ではありません。
の.htaccess
RewriteEngine On
RewriteRule ^photo/(.*)$ photo.php?fn=$1 [QSA,L]
.photo.php
<?php
// Images (not the safest way to check though)
$allowed_ext = array(
'gif' => 'image/gif',
'png' => 'image/png',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg'
);
$square_size = 150;
// Get file data
$file_name = trim($_GET['fn']);
$file_path = 'http://example.com/' . urlencode($file_name);
list($width, $height) = @getimagesize($file_path);
// Do something ONLY if file is found
if (!empty($width) && !empty($height)) {
$ext = pathinfo($file_path, PATHINFO_EXTENSION);
// We accept only predefined images. if not image extension - DIE!
if (empty($allowed_ext[$ext])) {
die();
} else {
$mtype = $allowed_ext[$ext]; // Set our predefined meme types ¯\_(ツ)_/¯
}
// Get new image ratio
$ratio = ($width > $height) ? $square_size/$width : $square_size/$height;
// Resize only if original is larger then allowed
if ($ratio < 1) {
$new_width = $width * $ratio;
$new_height = $height * $ratio;
} else {
$new_width = $width;
$new_height = $height;
}
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($file_path);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
header('Content-Type: ' . $mtype);
imagejpeg($image_p, null, 100);
}
die;
http://examplemydomain.com/photo/image.jpg
あなただけのオープン、セットアップし、それがリモートの画像をロードします。
あなたの答えはちょっと高めです。しかし、イメージをカスタマイズする必要はありません。私はこれを単純なヘッダー関数で実現しました。しかし、私は本当にこれを達成する方法を知ってほしいです.htaccessを使用して、あなたは言ったように。 –
画像に特定のディレクトリ構造がある場合(例:すべてが/ public/imagesにある場合)、サーバー設定(サーバーによってはhttpd.confまたはapache2.conf)を編集してプロキシを追加できます以下に類似:
ProxyPass /public/images http://examplemydomain.com/public/images
は
シンプルasnwer変更を行った後にApache/httpdの再起動をすることを忘れないでください - それは複雑です。複雑な答え - いくつかのPHPスクリプトをイメージの 'src'ファイルとして使用すると、そのスクリプトはリモートサーバー上のイメージファイルの内容を取得して出力します。 –
最初に複雑な答えを試してみましょう。 ;) –
これはまったく複雑ではありません。単純な.htaccess行はリモートホストイメージ/ URLを視覚的にあなたのホストにリダイレクトできますが、最初は**これが元のホストの著作権**にどのように影響しますか? – Peon