2012-05-21 64 views
6

我必须发送图片到web服务。 Web服务应该以字节(mayby bytearray)的形式接收图像 - 而不是字符串......如何将图像转换为“字节”或bytearray?转换图像为字节与PHP

我曾经尝试这样做(没有更迭):

$image1 = file_get_contents("LINK TO IMAGE"); 
$image1BinaryData = "".base64_encode($image1).""; 

任何帮助将不胜感激...

+0

用file_get_contents读取它应该返回一个字节数组,否?或者它具体返回一个字符串?如果是这样,请使用fopen,fread和fclose –

+0

阅读本文http://stackoverflow.com/questions/885597/string-to-byte-array-in-php –

回答

6

您是否尝试过直接读取图像作为二进制数据?

<?php 
$filename = "image.png"; 
$file = fopen($filename, "rb"); 
$contents = fread($file, filesize($filename)); 
fclose($file); 
?> 
+1

这是file_get_contents()所做的事情。 – goat

+0

我是新来的,所以请耐心等待:) 如果我使用这个考试,什么样的变量保存字节? – fletcher

+1

此解决方案的工作原理: '$ handle = fopen(“LINK TO IMAGE”,“rb”); $ contents = stream_get_contents($ handle); fclose($ handle);' – fletcher

0

一个PHP字符串是二进制的,所以它已经以字节为单位。

摆脱BASE64_ENCODE()和使用进行urlencode()或rawurlencode()

+0

像这样? $ image1 = file_get_contents(“test.jpg”); $ image1BinaryData = urlencode($ image1);可能是 – fletcher

+0

。取决于你如何将它发送到web服务。你可能根本不需要urlencode()。 – goat

1

这是实际的字节数组相当于在C#和Java中生成的内容。

$data = file_get_contents("test.jpg"); 

$array = array(); 
foreach(str_split($data) as $char){ 
    array_push($array, ord($char)); 
} 
var_dump(implode(' ', $array));