2011-12-12 3 views
2

기본적으로 Google의 QR 코드 API를 사용하여 바이트 배열에서 QR 코드를 만들려고합니다. 나는 'chl'변수 (QR 코드 용 데이터)에 대한 바이트 배열을 Google 웹 백엔드를 통과 시키려고 시도했지만 결코 마음에 들지 않습니다. 필자는 코드의 기초로 Google의 PHP 예제를 사용했지만 누군가가 Google의 API를 사용하여 바이트 배열을 QR 코드로 변환하는 유일한 방법을 알고 있다면 그게 유일한 목표입니다.QR 코드로 작은 파일

<?php 
// Create some random text-encoded data for a QR code. 
//header('content-type: image/png');  
$url = 'https://chart.googleapis.com/chart?chid=' . md5(uniqid(rand(), true)); 
$chd = file($_FILES["file"]["tmp_name"]); 

// Add image type, image size, and data to params. 
$qrcode = array(
'cht' => 'qr', 
'chs' => '300x300', 
'choe' => 'ISO-8859-1', 
'chl' => $chd); 


// Send the request, and print out the returned bytes. 
$context = stream_context_create(
array('http' => array(
    'method' => 'POST', 
    'content' => http_build_query($qrcode)))); 
fpassthru(fopen($url, 'r', false, $context)); 
?> 

업로드 된 파일을 처리하고 바이트 배열을 통해 Google의 API로 보내는 PHP가 있습니다.

+1

시도한 코드를 알려주십시오. – richsage

+0

데이터를 16 진수로 변환 해 볼 수 있습니다. – Blender

+0

업로드 된 파일에서 바이트 배열을 보내는 데 PHP가 일부 추가되었습니다. – VashGH

답변

1

file() 함수는 줄 바꿈으로 나누어지는 문자열 배열을 제공합니다. 나는 당신이 단지 끈을 원한다고 생각한다. file_get_contents()

가 있는지에

echo http_build_query($qrcode); 

당신에게 디버깅을 돕기 위해 만들어 참조하십시오.

+0

'echo http_build_query ($ qrcode);'이 방법은 정상적으로 작동하는 것처럼 보입니다. 그것은 정확하게 바이트 배열로 파일을 보내고 있습니다, 쿼리는 좋아 보인다. 내 문제는 이제 헤더가 변경되지 않은 원시 텍스트로 PNG를 반환한다는 것입니다. 헤더 행의 주석을 지우고 PNG로 만들면 요청을 제대로 보내지 않습니다. – VashGH

+0

왜 요청을 제대로 보내지 않았다고 생각합니까? – goat

+0

에코 된 요청을 API가 받아 들여 유효한 바코드를 생성해야한다는 가정하에 헤더가 변경되면 API는 데이터가 저장되지 않은 일반 1 수준 바코드를 출력합니다. – VashGH

0

Google 차트 서버를 사용하여 바이트 배열을 인코딩 할 수 없습니다. 문자열을 조작합니다. 나는 이것들을 해킹하려는 용감한 시도이지만 당신이 발견 한 이유 때문에 결국에는 효과가 없을 것이라고 생각합니다.

로컬로 zxing 프로젝트의 인코더를 사용해야합니다. 또한 문자열에서도 작동하지만 바이트 배열을 직접 지정하는 호출을 실제로 쉽게 변경하거나 삽입 할 수 있습니다.