개요
Image Resizer는 이미지 크기 조정을 위해 설계된 .NET 기반 명령줄 애플리케이션입니다. 바이트 단위의 대상 크기와 출력 폴더를 지정하여 제공된 이미지의 크기를 조정할 수 있습니다.
이 도구는 원본 이미지의 유사성을 유지하는 것을 목표로 합니다. 모든 차이는 사람의 시각이 허용하는 범위 내에 머물러야 합니다.
이 도구의 출력은 교차 상관 알고리즘을 사용하는 비교 테스트에서 시각적 유사도 점수 90% 이상을 목표로 합니다.
가져오기 / 내보내기 통합
지원되는 파일은 Glasswall Engine의 내보내기 기능을 사용하여 처리할 수 있습니다. 이 기능은 원본 문서에서 추출된 모든 이미지가 포함된 ZIP 파일을 출력합니다.
이 기능을 사용하면 이미지를 사용자 지정 방식으로 처리한 다음, 가져오기 기능을 사용하여 원본 문서에 다시 삽입할 수 있습니다.
하지만 다음과 같은 통합 제한 사항에 유의해야 합니다:
- 이미지 파일 이름을 원래 이름과 다르게 변경하면 가져오기 과정에서 이미지를 문서에 다시 배치하지 못하게 됩니다.
- 파일 이름은 대소문자를 구분합니다.
- 이미지의 파일 크기가 원본 크기를 초과하면 가져오기가 성공하지 못할 수 있습니다.
이 도구를 사용하면 사용자가 원본 파일 크기 이하의 대상 크기로 이미지 크기를 조정할 수 있어 원활한 가져오기 프로세스를 보장합니다.
사용법:
gw_image_resizer [options]
옵션:
-i, --in <filename> (REQUIRED) Input file name
-o, --out <filename> (REQUIRED) Output file name
-t, --target <max size in bytes> (REQUIRED) Target maximum output file size
-l, --memory-limit <max memory limit percentage> (OPTIONAL) An optional number that specifies the maximum amount of system memory percent the image resize is limited to [default: 50]
-T, --temp-dir <path> (OPTIONAL) Defines the path to an existing directory where temporary files are created during processing [default: $TMPDIR/.gw-image-resizer]
-?, -h, --help Show help and usage information
--version Show version information
종료 코드
| 종료 코드 | 설명 |
|---|---|
| 0 | 크기 조정에 성공했거나 파일이 이미 대상 크기였습니다 |
| 1 | 입력 파일의 대상 크기가 0보다 작습니다 |
| 2 | 입력 파일을 찾을 수 없습니다 |
| 3 | 입력 파일이 손상되었거나 지원되지 않아 로드할 수 없습니다 |
| 4 | 알 수 없는 이유로 입력 파일을 로드할 수 없습니다 |
| 5 | 출력 경로의 일부가 존재하지 않습니다 |
| 6 | 알 수 없는 이유로 출력 파일을 쓸 수 없습니다 |
| 7 | 크기 조정을 시도하는 동안 magick library에서 일반 오류가 발생했습니다 |
| 8 | 원하는 대상 크기에 도달할 수 없습니다 |
| 9 | 예기치 않은 오류 |
| 10 | 메모리 제한 옵션이 1-100 범위가 아니었습니다 |
| 11 | 임시 디렉터리 경로를 찾을 수 없습니다 |
| 12 | 임시 디렉터리에 쓸 수 없습니다 |
임시 디렉터리
파일 크기 조정이 성공적으로 수행되도록 처리 중에 image resizer tool은 "$TMPDIR/.gw-image-resizer" 또는 "/tmp/.gw.image-resizer"에 있는 임시 디렉터리를 사용할 수 있습니다. 이는 선택적 명령줄 옵션 "--temp-dir"("-T"는 축약형)을 사용하여 기존의 쓰기 가능한 디렉터리로 재정의할 수 있습니다.
참고: 임시 디렉터리에 쓰기 권한이 없으면(예: 현재 사용자에게 충분한 권한이 없는 경우) 이미지 처리 데이터를 캐시해야 할 때 애플리케이션이 실패합니다. 운영 중 간헐적인 문제를 방지하려면 사용자가 해당 디렉터리에 쓸 수 있는지 테스트하는 것이 좋습니다.
메모리 제한
기본적으로 이미지 크기 조정에 사용되는 메모리 할당은 시스템 메모리의 50%로 제한됩니다. 이는 선택적 명령줄 옵션 "-l"을 사용하여 1-100 사이의 값으로 재정의할 수 있습니다.
지원
이 도구는 현재 다음을 지원합니다:
- JPEG
- PNG
- BMP
- TIFF (GeoTiff 알려진 문제 참조)
- GIF
ImageMagick에서 지원하는 다른 파일도 올바르게 로드될 수 있지만, 명시적으로 구현되지는 않았습니다.
크기 조정 전략
지원되는 모든 이미지 파일은 대상 크기에 도달하기 위해 일련의 방법을 거칩니다. 예를 들면 다음과 같습니다:
압축 품질:
JPEG / JPG 파일의 품질은 25로 설정됩니다.
PNG 파일은 100으로 설정됩니다.
다른 파일 형식은 변경되지 않지만, 압축 방식은 항상 LZW로 설정됩니다.
GIF 최적화
GIF는 여러 이미지와 레이어로 구성될 수 있으므로, 파일 크기를 줄이기 위해 적용할 수 있는 잠재적인 최적화가 있습니다.
이미지의 서로 다른 레이어 크기가 서로 다르면, 파일 크기를 줄이기 위해 Image Magick에서 최적화가 수행됩니다.
그렇지 않으면 GIF는 Coalesced되며, 이는 크기를 줄이기 위해 시퀀스 내 이미지 간의 유사성을 병합합니다.
이 단계에서는 투명도도 최적화되며, 시퀀스 전체에서 중복되는 픽셀 데이터를 투명도로 대체합니다.
양자화
그런 다음 모든 이미지는 Quantized되며, 색상 수는 128개로 제한되고 이미 이보다 적은 경우에는 값이 변경되지 않습니다.
축소
아직 목표에 도달하지 못한 경우, 이미지가 목표에 도달할 때까지 크기가 조정됩니다. 해상도는 목표에 도달하거나 더 이상 해상도를 줄일 수 없을 때까지 원본의 95%로 계속 감소합니다.
알려진 문제
처리 과정에서 GeoTIFF의 픽셀에 포함된 위치 데이터가 제거될 수 있습니다. 또한 일반 TIFF에서는 그레이스케일 이미지에서 색상이 반전될 수 있습니다.
타사 라이브러리
| 라이브러리 이름 | 라이브러리 버전 | 유형 | 라이선스 유형 | 라이선스 URL | 프로젝트 URL | 소스 URL |
|---|---|---|---|---|---|---|
| System.CommandLine | 2.0.0-beta4.22272.1 | 라이브러리 | MIT | 링크 | 링크 | 링크 |
| System.CommandLine.Hosting | 0.4.0-alpha.22272.1 | 라이브러리 | MIT | 링크 | 링크 | 링크 |
| Magick.NET-Q8-AnyCPU | 13.10.0 | 라이브러리 | Apache-2.0 | 링크 | 링크 | 링크 |
Glasswall의 Image Resizer 도구는 ImageMagick용 dotnet 래퍼인 "Magick.NET-Q8-AnyCPU" NuGet 패키지를 사용합니다.
ImageMagick 자체는 디지털 이미지를 편집하고 조작하는 데 사용되는 무료 오픈 소스 도구입니다.