【问题标题】:cross-domain image for three.js (canvas/webGL), proxy?three.js(canvas/webGL)的跨域图像,代理?
【发布时间】:2013-07-17 21:18:12
【问题描述】:
【问题讨论】:
标签:
image
proxy
cross-domain
three.js
webgl
【解决方案1】:
我发现使用 THREE.ImageUtils.loadTexture 函数时,对于three.js,WebGL+CORS 对我不起作用。
此代码确实对我有用(注意:corsproxy.com 与尼克回答中的 PHP 相同)
var url = 'http://www.corsproxy.com/yourdomain/yourfolder/yourimage.png';
var image = document.createElement('img');
image.crossOrigin = '';
image.src = url;
var texture = new THREE.Texture(image);
texture.needsUpdate = true;
material.map = texture;
【解决方案2】:
尤里卡!!!像代理一样的 loox 是要走的路,
这成功了:)
<?php
// PHP Proxy
// Responds to both HTTP GET and POST requests
//
// Author: Abdul Qabiz
// March 31st, 2006
//
// Get the url of to be proxied
// Is it a POST or a GET?
$url = ($_POST['url']) ? $_POST['url'] : $_GET['url'];
$headers = ($_POST['headers']) ? $_POST['headers'] : $_GET['headers'];
$mimeType =($_POST['mimeType']) ? $_POST['mimeType'] : $_GET['mimeType'];
//Start the Curl session
$session = curl_init($url);
// If it's a POST, put the POST data in the body
if ($_POST['url']) {
$postvars = '';
while ($element = current($_POST)) {
$postvars .= key($_POST).'='.$element.'&';
next($_POST);
}
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}
// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, ($headers == "true") ? true : false);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// Make the call
$response = curl_exec($session);
if ($mimeType != "")
{
// The web service returns XML. Set the Content-Type appropriately
header("Content-Type: ".$mimeType);
}
echo $response;
curl_close($session);
?>