2012-05-21 16 views
6

Bir web servisine resim göndermem gerekiyor. Web hizmeti görüntüyü bayt olarak almalı (mayby ​​bytearray) - bir dize olarak değil ... Görüntüleri "byte" ya da bytearray'e nasıl dönüştürebilirim?Resimi bayt ile php'ye dönüştürün

I (başarıya olmadan) bu denedi:

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

Herhangi bir yardım takdir edilecektir ...

+0

File_get_contents ile okuma, bir bayt dizisi döndürmelidir, değil mi? Yoksa özel olarak bir ip mi döndürüyor? Bunu yaparsa, fopen, fread kullanın ve fclose kullanın –

+0

bunu okuyun http://stackoverflow.com/questions/885597/string-to-byte-array-in-php –

cevap

6

doğrudan ikili veri olarak görüntüyü okumak için denediniz kullanmak olsun?

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

bu, file_get_contents() öğesinin yaptığı şeydir. – goat

+0

Yeniyim, lütfen sabırlı olun :) Bu örneklemi kullanırsam, baytları hangi değişkenler tutar? – fletcher

+1

Bu çözüm şu şekilde çalışır: '$ handle = fopen (" IMAG TO IMAGE "," rb "); $ content = stream_get_contents ($ tutacağı); fclose ($ handle); ' – fletcher

0

bir php dize ikili, bu yüzden bayt bile.

() base64_encode kurtulmak ve urlencode() veya rawurlencode()

+0

Bunu beğendiniz mi? $ image1 = file_get_contents ("test.jpg"); $ image1BinaryData = urlencode ($ image1); – fletcher

+0

muhtemelen. Web servisine nasıl yolladığınıza bağlı. Hiçbir şekilde urlencode() gerekmeyebilir. – goat

1

Bu C# ve Java oluşturulur ne gerçek bayt dizisi eşdeğerdir.

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

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