programing

IE9에서 이진 데이터를 읽는 방법?

magicmemo 2023. 9. 13. 22:31
반응형

IE9에서 이진 데이터를 읽는 방법?

포토샵에 내장된 경로를 이용하여 이미지의 알파 마스크를 만드는 자바스크립트 코드를 작업하고 있습니다.IMG 태그의 온로드 핸들러가 클립을 호출합니다.이 기능은 이미지의 원본 파일을 로드하고 이미지를 스캔합니다.설정은 다음과 같습니다.

function clip(img) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', img.src, true);
    xhr.responseType = 'arraybuffer';
    xhr.target = img;

    xhr.onload = function(e) {
        var bytes = new Uint8Array(this.response);
        var p = findPhotoshopSegment(bytes);
        if(p) {
            var paths = parse8BIMData(bytes, p);

            /* ... replaces IMG with SVG tag ... */
        }
    };
    xhr.send();
}

사용 인 코드는 http://flaczki.net46.net/JPEG/SVG.html 에서 확인할 수 있습니다.

현재 파이어폭스, 크롬, 사파리에서만 작동합니다.IE9에서는 작동하지 않습니다.브라우저는 SVG를 지원하지만 Uint8Array는 지원하지 않습니다.무슨 해결책이라도 있나요?

pdf.js library를 가지고 놀다가 같은 문제가 있었는데, 제가 찾은 해결책은 저만의 Uint8Array를 만드는 것이고, 아래는 당신이 필요로 하는 코드입니다.모든 크레딧은 notmasteryet@graphics로 전송되며 전체 코드는 여기 https://gist.github.com/1057924 에서 확인할 수 있습니다.

(function() {
  try {
    var a = new Uint8Array(1);
    return; //no need
  } catch(e) { }

  function subarray(start, end) {
    return this.slice(start, end);
  }

  function set_(array, offset) {
    if (arguments.length < 2) offset = 0;
    for (var i = 0, n = array.length; i < n; ++i, ++offset)
      this[offset] = array[i] & 0xFF;
  }

  // we need typed arrays
  function TypedArray(arg1) {
    var result;
    if (typeof arg1 === "number") {
       result = new Array(arg1);
       for (var i = 0; i < arg1; ++i)
         result[i] = 0;
    } else
       result = arg1.slice(0);
    result.subarray = subarray;
    result.buffer = result;
    result.byteLength = result.length;
    result.set = set_;
    if (typeof arg1 === "object" && arg1.buffer)
      result.buffer = arg1.buffer;

    return result;
  }

  window.Uint8Array = TypedArray;
  window.Uint32Array = TypedArray;
  window.Int32Array = TypedArray;
})();

호환성의 범위가 넓어지는 것을 확인하고 싶다면, "web" 디렉토리 아래 PDF.js 배포판에 포함된 compatibility.js 파일을 사용할 수도 있습니다.Mozilla Github에서 PDF.js를 가져와 zip 아카이브를 압축 해제하고 위 디렉토리에서 compatibility.js 파일을 포함합니다.또한 IE9 등에서 PDF.js 라이브러리를 작동시킵니다.

언급URL : https://stackoverflow.com/questions/11881472/how-to-read-binary-data-in-ie9

반응형