2012-05-21 155 views
6

Tengo que enviar una imagen a un servicio web. El servicio web debería recibir la imagen como bytes (mayby ​​bytearray) - no como una cadena ... ¿Cómo convierto las imágenes a "byte" o bytearray?Convertir imagen a byte con php

He intentado esto (sin éxito):

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

Cualquier ayuda será apreciada ...

+0

Al leerlo con file_get_contents debe devolver una matriz de bytes, ¿no? ¿O devuelve específicamente una cadena? Si lo hace, use fopen, fread, y fclose –

+0

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

Respuesta

6

¿Ha intentado leer directamente la imagen como datos binarios?

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

esto es lo que file_get_contents() hace. – goat

+0

Soy nuevo, así que tenga paciencia :) Si utilizo este examen, ¿qué variable contiene los bytes? – fletcher

+1

Esta solución funciona: '$ handle = fopen (" ENLACE A IMAGEN "," rb "); $ contents = stream_get_contents ($ handle); fclose ($ handle); ' – fletcher

0

una cadena PHP es binario, por lo que ya es en bytes.

deshacerse de base64_encode() y utilizar urlencode() o rawurlencode()

+0

¿Me gusta? $ image1 = file_get_contents ("test.jpg"); $ image1BinaryData = urlencode ($ image1); – fletcher

+0

probablemente. depende de cómo lo envíe al servicio web. Es posible que no necesites urlencode() en absoluto. – goat

1

Esta es la matriz de bytes real equivalente a lo que se genera en C# y Java.

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

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