createImageBitmap 사용 불가? 플랫폼 및 환경별 문제 해결 가이드
문제 해결브라우저 호환성createImageBitmap
당신이 보는 증상
Any3D에서 "현재 브라우저가 createImageBitmap을 지원하지 않습니다."라는 메시지가 표시됩니다. 이는 Worker 경로의 세 가지 핵심 요소 중 하나로, 백그라운드에서 이미지 픽셀을 효율적으로 디코딩하는 역할을 합니다. 이 기능이 없으면 텍스처 압축, 이미지를 모델로 변환하는 등의 작업이 전체 Worker 경로를 사용할 수 없게 되어 대용량 파일에서 더 쉽게 끊김이 발생합니다.
일반적인 원인
| 원인 | 일반적인 시나리오 |
|---|---|
| 브라우저/WebView 버전이 너무 오래됨 | 오래된 Android WebView, 앱 내장 웹뷰 |
| 비보안 컨텍스트 | HTTP 사이트 (localhost 제외), file:// |
| 교차 출처 리소스 설정 오류 | 엔터프라이즈 CDN/CORS로 인해 이미지 디코딩 실패 (기능 이상으로 나타남) |
| 메모리/탭 제한 | 모바일 저사양 기기, 엔터프라이즈 '단일 탭' 정책 |
| 확장 프로그램 간섭 | 개인정보 보호 플러그인이 Image API 동작 변경 |
플랫폼별 문제 해결
Windows / macOS (데스크톱)
- Chrome / Edge / Firefox / Safari 최신 안정 버전을 사용하세요.
- 반드시 HTTPS로 Any3D를 열어야 합니다.
- macOS 스크린 타임, Windows 가족 보안에서 다운로드 또는 미디어 액세스를 제한하는 경우 큰 이미지 디코딩에 영향을 줄 수 있습니다. 관리자 계정으로 테스트해 보세요.
- 원격 데스크톱: 고해상도 텍스처가 약한 GPU 환경에서 디코딩에 실패할 수 있습니다. 작은 이미지로 먼저 확인하세요.
Linux
- Chrome/Firefox를 업데이트하세요. Wayland에서 GPU 디코딩이 비정상적이면 X11 세션으로 전환해 비교해 보세요 (드물지만).
iOS / iPadOS
- **Safari 14+**부터 지원이 양호합니다. iOS 시스템을 최신 상태로 유지하세요.
- 카카오톡 내장 브라우저는 커널이 자주 구형이므로 → Safari로 열기.
- iCloud 비공개 릴레이 / 성인 콘텐츠 제한은 일반적으로 createImageBitmap을 차단하지 않지만, 교차 출처 이미지 호스팅을 차단할 수 있습니다. 모델 텍스처가 동일 출처이거나 접근 가능한지 확인하세요.
Android
- Chrome과 Android System WebView를 업데이트하세요 (설정 → 앱 → 시스템 앱 표시).
- 국내 브랜드 브라우저의 호환 모드 → Chrome으로 전환.
- 디지털 웰빙 / Family Link가 백그라운드 활동을 제한해도 API 자체에는 직접 영향을 주지 않지만, 대용량 파일 업로드를 방해할 수 있습니다.
네트워크, VPN 및 엔터프라이즈 인트라넷
| 시나리오 | 설명 |
|---|---|
| 회사 VPN | 모델 텍스처가 인트라넷 CDN을 통해 제공되는 경우 CORS 또는 인증서 오류로 디코딩 실패 가능 – 콘솔에 네트워크 오류 발생 |
| 투명 프록시 | 이미지 응답이 대체되거나 손상되면 createImageBitmap이 reject될 수 있음 |
| 인트라넷이 HTTP만 지원 | 비보안 컨텍스트에서는 API를 사용할 수 없거나 동작이 제한됨 |
| 제로 트러스트 / SSL 검사 | 자체 서명 인증서는 신뢰할 수 있도록 가져와야 함. 그렇지 않으면 리소스 로드 실패 |
권장 사항: VPN을 끄고, 핫스팟으로 전환하여 외부 텍스처가 없는 순수 기하학 모델을 업로드해 테스트하세요. 순수 기하학은 정상이지만 텍스처가 있는 모델에서 실패하면 네트워크/CORS를 우선 확인하세요.
엔터프라이즈 정책 및 자녀 보호
- Intune 앱 보호 정책이 '다른 이름으로 저장/다운로드'를 제한하여 사용자의 파일 선택 과정에 간접적으로 영향을 줄 수 있지만, API 자체는 여전히 존재해야 합니다. 콘솔에서 직접 테스트하여 구분하세요.
- 학교 iPad 관리에서 '파일 앱'을 금지해도 API에는 영향을 주지 않지만, 업로드 방식을 제한할 수 있습니다. 지원되는 업로드 채널을 사용하세요.
- 라우터 자녀 보호 DNS가 Any3D 도메인을 차단하면 사이트 전체가 사용 불가능해지며, createImageBitmap만 별도로 차단되지는 않습니다.
단계별 수정 (공통)
- HTTPS + 최신 브라우저 + 재시작.
- 시크릿 모드로 확장 프로그램 배제.
- 시스템 브라우저로 열기, 앱 WebView가 아닌.
- 동시에 Web Worker 및 OffscreenCanvas 경고도 확인하세요.
빠른 자가 테스트
typeof createImageBitmap !== "undefined";
고급 (HTTPS 및 접근 가능한 이미지 URL 필요):
fetch("https://example.com/favicon.ico")
.then((r) => r.blob())
.then((b) => createImageBitmap(b))
.then(() => console.log("ok"))
.catch(console.error);
요약
createImageBitmap 문제는 대부분 오래된 WebView, 비HTTPS, VPN/인트라넷으로 인한 리소스 로드 실패가 원인입니다. 플랫폼에 맞게 WebView를 업데이트하고, 네트워크를 변경해 테스트하며, 확장 프로그램을 배제하면 Worker 이미지 경로가 일반적으로 복구됩니다.