티스토리 뷰
728x90
다운로드
How to download Skia | Skia 를 참고해서 depot_tools를 설치하고 소스를 다운로드한다.
추가로, ninja와 bazel은 따로 설치해둬야 한다.
depot_tools 설치
git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'
export PATH="${PWD}/depot_tools:${PATH}"
소스 다운로드
git clone https://skia.googlesource.com/skia.git
빌드
How to build Skia | Skia 를 참고해서 플랫폼에 맞게 빌드하면 된다.
리눅스에서는 아래 커맨드들을 입력해주면 된다.
bin/gn gen out/Debug
tools/install_dependencies.sh
ninja -C out/Debug
샘플 코드 추가 및 빌드
Skia 프로젝트에서 새로운 프로그램을 추가하고 빌드하려면, cpp 파일을 추가하고 BUILD.gn 파일에 빌드 세팅을 입력해줘야 한다.
skia/ 폴더 아래에 HelloWorld/hello_word.cpp 처럼 파일과 폴더를 추가해주었다.
#include "include/core/SkCanvas.h"
#include "include/core/SkGraphics.h"
#include "include/core/SkPaint.h"
#include "include/core/SkSurface.h"
#include "include/core/SkData.h"
#include "include/core/SkImage.h"
#include "include/core/SkStream.h"
#include "include/encode/SkPngEncoder.h"
#include <iostream>
void draw(SkCanvas* canvas) {
SkPaint p;
p.setColor(SK_ColorRED);
p.setAntiAlias(true);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(10);
canvas->drawLine(20, 100, 100, 100, p);
}
int main() {
// Skia 초기화
SkGraphics::Init();
// 800x600 크기의 서피스 생성
SkImageInfo imageInfo = SkImageInfo::MakeN32Premul(800, 600);
sk_sp<SkSurface> surface = SkSurfaces::Raster(imageInfo);
SkCanvas* canvas = surface->getCanvas();
// Draw
draw(canvas);
// 이미지 스냅샷 생성
sk_sp<SkImage> image = surface->makeImageSnapshot();
// PNG 데이터로 인코딩
sk_sp<SkData> pngData = SkPngEncoder::Encode(nullptr, image.get(), {});
if (!pngData) {
std::cerr << "Failed to encode image to PNG data." << std::endl;
return -1;
}
// 파일로 저장
SkFILEWStream out("output.png");
out.write(pngData->data(), pngData->size());
std::cerr << "Saved output.png" << std::endl;
// Skia 종료
SkGraphics::PurgeAllCaches();
return 0;
}
skia 폴더 아래에 BUILD.gn 파일이 있고, 파일 마지막에 아래와 같이 빌드 정보를 추가해준다.
executable("hello_world") {
sources = [
"HelloWorld/hello_world.cpp",
]
deps = [
":skia",
]
}
그리고 다음 명령어를 입력하여 build config를 만들어준다.
bin/gn gen out/Debug
이제 hello_world 타겟을 빌드하면 된다.
ninja -C out/Debug hello_world
out/Debug/ 경로 아래에 hello_world 실행 파일이 생성되고, 아래와 같이 실행하면 skia/의 root 디렉토리에 바로 output.png가 생성된다.
$ ./out/Debug/hello_world
Saved output.png
열어보면 skia가 생성한 이미지가 보인다.
728x90
'개발 > Skia' 카테고리의 다른 글
Skia 예제 코드 및 실행 결과 확인 (0) | 2024.08.23 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Skia
- javascript
- 네키
- 다크스텀프
- 리스본
- 포르투
- 원숭이의숲
- aosp 빌드
- java
- 앞자리 0 제거
- 진료 병원 찾기
- Python
- 티스토리챌린지
- 포르투갈
- 와보땅
- 오블완
- 파란버섯
- adb
- 와일드보어의 땅
- 모루정원
- 메이플랜드
- DART
- android
- Flutter
- 리스보아 카드
- 파이썬
- 12e 트램
- 나무던전
- 15e 트램
- 주황버섯
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함