2013-03-25 109 views
0

我已经上传图像到一个名为图像的文件夹,现在我试图将图像转换成字符串,但它不适合我,这里是我的代码,可以任何一个重定向我在正确的方向,我想将它转换成base64字符串,我已经用代码尝试了很多,图像现在已经存储在images文件夹中。图像base64字符串

<?php 
//define a maxim size for the uploaded images in Kb 
define ("MAX_SIZE","1000"); 

//This function reads the extension of the file. It is used to determine if the file is an image by checking the extension. 
function getExtension($str) { 
$i = strrpos($str,"."); 
if (!$i) { return ""; } 
$l = strlen($str) - $i; 
$ext = substr($str,$i+1,$l); 
return $ext; 
} 

//This variable is used as a flag. The value is initialized with 0 (meaning no error found) 
//and it will be changed to 1 if an errro occures. 
//If the error occures the file will not be uploaded. 
$errors=0; 
//checks if the form has been submitted 
if(isset($_POST['Submit'])) 
{ 
//reads the name of the file the user submitted for uploading 
$image=$_FILES['image']['name']; 
//if it is not empty 
if ($image) 
{ 
//get the original name of the file from the clients machine 
$filename = stripslashes($_FILES['image']['name']); 
//get the extension of the file in a lower case format 
$extension = getExtension($filename); 
$extension = strtolower($extension); 
//if it is not a known extension, we will suppose it is an error and will not upload the file, 
//otherwise we will do more tests 
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
{ 
//print error message 
echo '<h1>Unknown extension!</h1>'; 
$errors=1; 
} 
else 
{ 
//get the size of the image in bytes 
//$_FILES['image']['tmp_name'] is the temporary filename of the file 
//in which the uploaded file was stored on the server 
$size=filesize($_FILES['image']['tmp_name']); 

//compare the size with the maxim size we defined and print error if bigger 
if ($size > MAX_SIZE*1024) 
{ 
echo '<h1>You have exceeded the size limit!</h1>'; 
$errors=1; 
} 

//we will give an unique name, for example the time in unix time format 
$image_name=time().'.'.$extension; 
//the new name will be containing the full path where will be stored (images folder) 
$newname="images/".$image_name; 
//we verify if the image has been uploaded, and print error instead 
$copied = copy($_FILES['image']['tmp_name'], $newname); 
if (!$copied) 
{ 
echo '<h1>Copy unsuccessfull!</h1>'; 
$errors=1; 
}}}} 

//If no errors registred, print the success message 
if(isset($_POST['Submit']) && !$errors) 
{ 
echo "<h1>File Uploaded Successfully! Try again!</h1>"; 
function encode_img($image_name) 
{ 
$fd = fopen ($image_name, 'rb'); 
$size=filesize ($image_name); 
$cont = fread ($fd, $size); 
fclose ($fd); 
$encimg = base64_encode($cont); 
return $encimg; 
} 
$image_base64=encode_img('$image_name'); 
echo $image_base64;// to encode the image 
} 
?> 
<!--next comes the form, you must set the enctype to "multipart/frm-data" and use an input type "file" --> 
<form name="newad" method="post" enctype="multipart/form-data" action=""> 
<table> 
<tr><td><input type="file" name="image"></td></tr> 
<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> 
</table> 
</form> 
+2

看看这个问题张贴在这里 - http://stackoverflow.com/questions/3967515/convert-image-to-base64-encoding-in-php – Pankucins 2013-03-25 10:13:52

回答

0

简单使用的file_get_contents

+0

我已经编辑了我的代码,在$ newname =“images/".$ image_name;然后我添加了echo $ newname; $ contents = file_get_contents('$ newname'); $ encode = base64_encode($ contents); echo $ encode;我可以打印图像路径,但我没有得到字符串?为什么是这样? – Sree 2013-03-25 10:43:19

+0

首先检查$ newname是否返回正确的图像名称 – ajay 2013-03-25 10:52:12

+0

检查了这个http://codepad.viper-7.com/2ysGq3 ..我唯一可以说的是文件file_get_contents()的路径是不正确的。 – alwaysLearn 2013-03-25 10:57:30

相关问题