# base64 이미지 변환



base64로 인코딩된 이미지 문자열을 보내면 원래 형식의 이미지 파일로 돌려줍니다. 응답은 JSON이 아닌 이미지 파일입니다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/base64_to_image 응답 필드

## API 요청: POST /rest/base64_to_image



### 입력

- `base64` (string, 필수): 이미지 base64 문자열 (data:image/타입;base64, 접두어 허용)



### 응답 명세

```json

{
  "type": "string",
  "format": "binary"
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/base64_to_image' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'base64=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("base64", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==");
const response = await fetch("https://apick.app/rest/base64_to_image", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
if ((response.headers.get("content-type") || "").includes("json")) {
  throw new Error(JSON.stringify(await response.json()));
}
const { writeFile } = await import("node:fs/promises");
await writeFile("result.bin", new Uint8Array(await response.arrayBuffer()));

```

### python

```python

import os
import requests
parts = [
    ("base64", (None, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==")),
]
response = requests.request("POST", "https://apick.app/rest/base64_to_image",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120), stream=True)
response.raise_for_status()
if "json" in response.headers.get("Content-Type", ""):
    raise RuntimeError(response.json())
with open("result.bin", "wb") as output:
    for chunk in response.iter_content(65536):
        output.write(chunk)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'base64' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==',
];
$curl = curl_init('https://apick.app/rest/base64_to_image');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE) ?: "";
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
if (strpos($type, "json") !== false) { throw new RuntimeException($body); }
file_put_contents('result.bin', $body);

```

## 사용 예시 1. data URL을 이미지 파일로

캔버스·서명 패드에서 받은 `data:image/png;base64,` 문자열을 그대로 보냅니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/base64_to_image' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'base64=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

- 응답 `Content-Type`(예: `image/png`)에 맞는 확장자로 저장합니다.

## 사용 예시 2. 접두어 없는 base64 문자열

다른 API 응답에서 받은 순수 base64 문자열도 그대로 보낼 수 있습니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/base64_to_image' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'base64=iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

- `파일 유형이 맞지 않습니다.` 오류이면 문자열이 잘렸거나 이미지가 아닌 데이터입니다.

## 코드·오류

## 상세 기능·요금

이용 전 확인 다른 API나 캔버스·서명 패드에서 받은 base64 이미지 문자열을 파일로 저장하거나 업로드용 파일로 바꿀 때 사용합니다. 순수 base64 문자열과 data:image/png;base64,처럼 접두어가 붙은 문자열을 모두 받습니다. 결과 파일 형식은 문자열 안의 실제 이미지 형식(PNG·JPEG·GIF·WEBP 등)으로 정해지며, 이미지가 아닌 데이터는 거절됩니다. 성공한 건당 2P입니다. 실패 응답은 과금되지 않습니다.

## 상세 요청

항목설정 메서드·주소POST https://apick.app/rest/base64_to_image 인증 헤더Authorization: Bearer 내 계정의 API 인증키 본문 형식multipart/form-data 요청 예시 form-data 전체 예제 보기

## 상세 응답

성공하면 이미지 본문이 바로 옵니다. 내려받기 파일명은 output.확장자(예: output.png)이며, 확장자는 Content-Type과 같습니다. 응답 헤더 필드타입설명 successinteger1이면 변환에 성공한 것입니다. costinteger이번 요청에서 차감된 포인트입니다. msinteger처리 시간(밀리초)입니다. Content-Typestring결과 이미지 형식입니다. 예: image/png, image/jpeg

## 상세 코드·정책

오류와 대처 실패하면 이미지 대신 JSON이 옵니다. HTTP 상태와 Content-Type을 먼저 확인하고, JSON이면 data.error 문구를 기록하세요. 실패 응답의 api.cost는 0입니다. HTTPdata.error대처 400입력 항목이 잘못됐습니다.base64 값이 비어 있지 않은지 확인하세요. 400파일 유형이 맞지 않습니다. 이미지 형식의 파일만 허용됩니다.문자열이 잘리지 않았는지, 이미지 데이터를 인코딩한 것인지 확인하세요.

## 상세 예제

결과 예시 [이미지]
