ruby-libgd는 이미지 서버, PHP, 지도 렌더러 등에서 사용되는 C 엔진인 libgd에 대한 현대적인 네이티브 바인딩입니다. 이 라이브러리는 루비가 외부 프로세스 없이 직접 이미지를 생성하고, 도형을 그리며, 레이어를 블렌딩하고, 텍스트를 렌더링하며, 필터를 적용할 수 있는 기능을 제공합니다.
핵심 기능: 선 두께 지원
ruby-libgd는 단순한 얇은 선을 넘어 선, 호, 원, 타원, 사각형, 다각형 등 모든 도형에 대한 스트로크 너비(두께)를 지원합니다. 이는 도로, 테두리, 윤곽선, 차트, 지도 기능과 같은 심각한 렌더링에 필수적인 요소입니다. 예를 들어, img.arc(200, 200, 260, 260, 0, 270, blue, thickness: 6)와 같이 간결한 코드로 두께를 지정할 수 있습니다.
기본 도형으로 차트 생성
래스터 엔진이 안정화되면서, ruby-libgd는 전문 렌더러와 동일한 모델인 기본 도형의 조합을 통해 차트를 그릴 수 있게 되었습니다. 차트의 막대는 채워진 사각형과 테두리 사각형의 조합으로 구현되며, 이는 Cairo, Skia, Mapnik, GIS 엔진이 모든 것을 그리는 방식과 동일합니다. 이 접근 방식을 통해 막대 차트, 오차 막대 포함 수평 차트, 원형 차트, 줄기 그림, 누적 영역 차트 등 다양한 차트가 루비로 직접 렌더링될 수 있습니다.
차트를 넘어선 활용: 지도 엔진
ruby-libgd가 제공하는 색상 막대, 누적 영역, 부드러운 곡선, 그라디언트, 투명도, 레이블과 같은 구성 요소들은 단순히 차트뿐만 아니라 지도 엔진에서 사용되는 것과 동일한 빌딩 블록입니다. 지도는 레이어드 그래픽이며, ruby-libgd는 루비가 이를 그릴 수 있는 엔진을 제공합니다.
풍부한 예제 스위트
ruby-libgd 저장소에는 examples/ 디렉토리에 기본적인 기능, 차트, 이미지 처리 등 다양한 예제가 포함되어 있습니다. 이를 통해 두꺼운 선과 도형, 그라디언트, 알파 블렌딩, 필터, 이미지 합성 및 전체 차트 생성기를 직접 실행하고 루비가 실제 이미지를 생성하는 것을 확인할 수 있습니다.