2013-03-27 52 views
0

所以,我想在這裏用戶可以上傳圖片,PHP腳本將添加水印吧,ND的PIC將imgur使用imgur API無法使用fopen和file_get_contents獲取使用PHP創建的圖像的base64?

添加水印的圖像和託管它imgur被託管不是問題,但問題是:要將圖片上傳到imgur,我們必須傳遞圖片的base64,並且我無法使用file_get_contentsfopen獲取已由PHP腳本授予水印的圖片,但它始終會給出錯誤

有人請幫助我的問題,所以我可以獲取圖像,其編碼爲Base64

這一切

UPDATE:

只是告訴你,我用的功能,直接打開PHP文件,而不先保存PIC到磁盤,由於某種原因,我無法將圖像保存到磁盤,這就是爲什麼我使用imgur

再次更新:

這裏是我的代碼:

<?php 
    header('Content-type: image/png'); 
    $image = $_GET['url']; 
    $imagesize = getimagesize($image); 
    $img = imagecreatetruecolor($imagesize[0], $imagesize[1] + 50); 
    imagecopy($img, imagecreatefrompng($image), 0, 0, 0, 0, $imagesize[0], $imagesize[1]); 
    $string = "Some wild watermarks"; 
    $font = "font.ttf"; 
    $fontSize="30"; 
    $textColor = imagecolorallocate($img, 255,255,255); 
    $x=7; 
    $y=$imagesize[1] + 42; 
    imagettftext($img,$fontSize,0,$x,$y,$textColor,$font,$string); 
    imagepng($img); 
?> 

這是我得到的錯誤:

使用file_get_contents

Warning: file_get_contents(watermark.php?url=roughdesign.png) [function.file-get-contents]: failed to open stream: Result too large in URL 

使用fopen

Warning: fopen(watermark.php?url=roughdesign.png) [function.fopen]: failed to open stream: Result too large in URL 
Warning: filesize() [function.filesize]: stat failed for URL 
Warning: fread(): supplied argument is not a valid stream resource in URL 
+1

請發佈您的代碼。 – 2013-03-27 10:57:37

+0

「總是給出錯誤」不是對你的問題的恰當描述。解釋並顯示你已經嘗試了什麼,發生了什麼錯誤以及你期望發生什麼。 – Repox 2013-03-27 11:00:00

+0

@cryptic:稍後當我到達我的電腦 – gamehelp16 2013-03-27 11:01:03

回答

0

你可以試試這個 -

<?php 
function base64_encode_image ($filename=string,$filetype=string) { 
    if ($filename) { 
     $imgbinary = fread(fopen($filename, "r"), filesize($filename)); 
     return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary); 
    } 
} 
?> 

你可以找到base64_encode

OR

更多信息

或者你可以做到這 -

$imageContent= file_get_contents($yourImage); 
$encoded = base64_encode($imageContent); 
+0

之前,我使用了'fopen'功能,並且出現錯誤 – gamehelp16 2013-03-27 11:04:11

+0

我認爲他的問題與打開文件有關,添加水印並且無法獲取之後的base64。他應該添加水印,保存「新」圖像,然後打開該圖像並計算該圖像的base64。現在,我們不知道他是否以及何時保存了crate圖像以及他試圖計算base64的圖像或數據。 – inquam 2013-03-27 11:05:00

+0

@inquam:因此,我無法計算base64的圖像是由PHP腳本創建的圖像 – gamehelp16 2013-03-27 11:08:09

0

簡單的僞代碼的想法

這應該很好。如果你有任何錯誤陳述他們說什麼,你在哪裏得到他們。

+0

但這意味着上傳圖像imgur沒有用,因爲某些原因,我不能保存圖像到磁盤,所以我把它託管到imgur – gamehelp16 2013-03-27 11:14:45

+0

@ gamehelp16:所以你只想添加水印到內存中的圖像,然後上傳它而不保存它?這應該工作,只需計算新創建的圖像的base64而不保存它。如果您不允許在本地保存圖像,那麼我猜您使用* get_file_contents *讀取的錯誤文件必須是原始圖像?如果是這種情況,您是否有權讀取該文件? – inquam 2013-03-27 11:17:32

+0

對不起,我不知道本地主機的文件權限,因爲我仍在測試localhost中的代碼 – gamehelp16 2013-03-27 11:22:23

相關問題