我需要一些幫助,從服務器中加載PNG文件到我的Flash項目中。我想要做的就是能夠調用一個PHP頁面併發送一個我可以做的變量。然後我想訪問一個數據庫並獲取圖像的路徑,我也可以這樣做。我不確定的是當時該怎麼做。 我需要發生的是PHP以某種方式返回PNG閃存。我可以將PNG添加到php頁面並以某種方式使用加載器嗎?我一直在谷歌搜索,但大多數教程似乎獲得PNGs。AS3從PHP加載PNG
感謝 本
我需要一些幫助,從服務器中加載PNG文件到我的Flash項目中。我想要做的就是能夠調用一個PHP頁面併發送一個我可以做的變量。然後我想訪問一個數據庫並獲取圖像的路徑,我也可以這樣做。我不確定的是當時該怎麼做。 我需要發生的是PHP以某種方式返回PNG閃存。我可以將PNG添加到php頁面並以某種方式使用加載器嗎?我一直在谷歌搜索,但大多數教程似乎獲得PNGs。AS3從PHP加載PNG
感謝 本
它實際上是很容易的。 :)
<?php
// do some mysql magic.
// let's assume you get a filename back as $file_name;
header('Content-type: image/png');
readfile($file_name);
請注意,您可能還必須包含一些路徑信息。不知道你的圖像存儲在哪裏,但是如果圖像在/ var/www/public/images中,你會很喜歡將它加入到你的file_get_contents調用中。
補充:另外,如果你只是想一個路徑返回PNG,你可以做一個URLRequest到PHP文件,讓它找出圖像的居住地,並返回一個URL。這更簡單了...我只是推薦標準化爲像XML這樣的數據交換協議或者甚至更好的JSON ......這樣,如果您決定要跳出Flash和瀏覽器技術,那麼您的後端將已經在等着你。
<?php
// do some mysql magic.
// let's assume you get a filename back as $file_name;
$retVal = array('pathname'=>$file_name);
header('Content-type: application/json');
echo json_encode($retVal);
正確的方法是'header('Content-type:image/png'); readfile($ file_name);' – 2011-05-24 11:21:23
哎呀內容類型。過去我曾遇到過讀取文件的問題,但我確實忘記了確切的情況。所以是的,兩方都同意。 – 2011-05-24 11:25:13
'readfile'將文件內部分塊發送到響應流,其中'file_get_contents'將文件讀入內存,然後通過緩衝區發送出去,使用'readfile'將保持內存使用率降低。 – RobertPitt 2011-05-24 11:41:36
如果你只要將網址返回到flash就足夠了。
import flash.display.*;
import flash.net.URLRequest;
var rect:Shape = new Shape();
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0, 0, 100, 100);
rect.graphics.endFill();
addChild(rect);
var ldr:Loader = new Loader();
ldr.mask = rect;
var url:String = ""; //put the returned img url you got from the php here.
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq); //the loader will start loading the img
addChild(ldr); //here you add the loader to stage.
也許只有一兩毫米,你什麼都看不到。但是隻要加載器加載了img,你就會看到它。
您必須輸入返回的img網址。因此,不是返回img網址的網頁的網址。
如果你把上面的約翰·格林的答案 - PageSpike你可以只要PHP頁面是一個在約翰·格林的使用我的代碼 - PageSpike他的答案,你將返回的,而不是img然後將參數傳遞給php頁面;
var url:String = "http://www.yoursite.com/getImage.php?imgParameter=image123";
因此,該網址現在鏈接到約翰綠色 - PageSpike腳本的鏈接,它將實際返回圖像。
他可能不想這樣做,以防止他的私人圖像目錄被嗅探。 – RobertPitt 2011-05-24 11:23:50
「我想要做的就是調用一個PHP頁面併發送一個我可以做的變量。」這意味着只要頁面被曝光,每個人都可以獲得圖像。因爲我可以在瀏覽器中調用頁面並傳遞get圖像。或者我可以編寫一個簡單的腳本來使用POST var調用頁面。所以這沒關係。 – SynerCoder 2011-05-24 11:36:39
@RobertPitt,@SynerCoder - 對於上下文,我認爲他實際上是根據我給他的一些以前的建議:http://stackoverflow.com/questions/6087598/as3-bitmap-storage/6087853#6087853。 – 2011-05-24 11:48:50
由於JHON格林已經提到的,它會工作
http://www.yourserver.com/filesforflash/?file_id={id}
header('Content-type: image/png');
readfile($file_name);
,但你可能需要一些時間也需要即使您發送的內容類型圖像/ PNG的頭上面的網址將無法正常工作。快速提示對於即將發送的文件名本身,而不是自己的ID
http://www.yourserver.com/filesforflash/{id}-filename.png
爲此,您可能需要使用國防部重寫。
我想標記所有的答案是正確的。我將返回文件名,然後在最後使用flash來加載帶有文件名的serverurl。謝謝您的幫助。 – 2011-05-24 13:44:20