내가 사용하고있는 문제를 설명하기 전에 유스 케이스에 맞춰서 작업 할 것입니다.PHP 수정 이미지 바이트 바이트
나는 phonegap 프레임 워크를 사용하여 모바일 응용 프로그램을 작성하고 있습니다.
이 응용 프로그램의 경우 파일 (카메라로 만든 그림)을 업로드해야합니다.
대부분의 플랫폼에서이 이미지를 base64 인코딩 이미지로 되돌릴 수 있습니다.
이것을 서버로 다시 보낼 수 있으며 디코딩하여 저장할 수 있습니다. (QR 코드이기 때문에 재미있는 일을 할 수 있습니다).
이제 symbian에서 base64 문자열을 가져올 수 없으며 URI 만 이미지에 가져올 수 있습니다. 이것은 xmlhttprequest를 사용하여 이미지 데이터를 얻고 javascript를 사용하여 base64로 인코딩 할 수 있기 때문에 문제가되지 않습니다.
이 방법은 효과가 있지만 문제가됩니다.
심비안 브라우저에 버그가있는 것 같습니다. 2005 년부터 웹킷 기반의 브라우저입니다 (예, 최신 S60 전화기에서도 그렇습니다).
버그는 utf-8 테이블이 아닌 모든 문자를 2 바이트로 변환한다는 점에서 버그입니다. 제대로 기억한다면 127 이상 모든 것이 었습니다.
자바 스크립트를 사용하여이 버그를 수정하려고했지만 캔버스가 지원되지 않으므로 아무 것도 지원되지 않습니다 (btw, canvas 및 getBinaries 또는 이와 유사한 것). 브라우저에서).
그래서, PHP에서 바이트를 수정하는 해결 방법을 빌드하려고합니다.
function getValidBin($bin, $offset = 0) {
$binLength = sizeof($bin);
for ($i = $offset; $i<=$binLength; $i++) {
if ($i == $binLength) {
return false;
}
if ($bin[$i] < 127) {
$binT = $bin[$i] + $bin[$i+1];
$bin2 = $bin;
$bin2[$i] = $binT;
$bin2[$i+1] = null;
if (imagecreatefromstring($bin2) != false) {
return $bin2;
} else {
$bin3 = getValidBin($bin2, $i);
if ($bin3 != false) {
return $bin3;
}
}
}
}
}
이 기능은 어떤 이유로 작동하지 않습니다 : 이것은 작동하지 않습니다하지만 내가 지금 가지고있는 것입니다. 나는 다음과 같은 경고 얻을 :
Warning: imagecreatefromstring() [function.imagecreatefromstring]: Data is not in a recognized format in /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php on line 98
을 그리고 난 얻을 :
Fatal error: Maximum function nesting level of '100' reached, aborting! in /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php on line 87
이 마지막 하나는 아주 쉽게 해결하기 위해, 내가 생각,하지만 난 i'de 어쨌든 그것을 게시 생각합니다.
내 질문은 다음과 같습니다.
올바른 길에 있습니까?
경고를 어떻게 해결합니까? 사전에 많은
에릭
추신
감사합니다 미안해, 내 영어가 나쁘다면. 나는 네덜란드 인이기 때문에 원어민이 아닙니다.
p.s.2 내가 얘기 한 버그는이 하나입니다 http://markmail.org/message/iosbn3rbcgu5k6qt
편집 : (100) 깊이의 최대에 대한 솔루션은 내가 생각했던 그때 더 열심히했다. 그래서 그것에 도움이 될 것입니다.
원본 및 수정 된 바이트 시퀀스는 어떻게 생겼습니까? –
올바른 바이트를 제공하는 방법을 모르겠지만 base64를 제공 할 수 있습니다. http://www.erikmaas.com/test/bins.html – Erik
Webkit 2005? 아마도 버그가있을 수 있습니다. 웹킷 브라우저를 업그레이드 해보십시오. – alexy13