| /* |
| * Copyright 2024 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "include/codec/SkCodec.h" |
| #include "include/codec/SkJpegDecoder.h" |
| #include "include/codec/SkPngDecoder.h" |
| #include "include/core/SkImage.h" |
| #include "include/core/SkString.h" |
| #include "modules/skresources/include/SkResources.h" |
| |
| #include <cstdio> |
| #include <filesystem> |
| |
| // bazel run :use_skresources -- $SKIA_HOME/resources |
| int main(int argc, char** argv) { |
| if (argc != 2) { |
| printf("Usage: %s [folder]", argv[0]); |
| return 1; |
| } |
| |
| SkCodecs::Register(SkJpegDecoder::Decoder()); |
| SkCodecs::Register(SkPngDecoder::Decoder()); |
| auto frp = skresources::FileResourceProvider::Make(SkString(argv[1])); |
| |
| // Try to load two arbitrary files in //resources/images |
| |
| sk_sp<skresources::ImageAsset> asset = frp->loadImageAsset("images", "baby_tux.png", ""); |
| if (!asset) { |
| printf("Could not load baby_tux.png in images subdirectory\n"); |
| return 1; |
| } |
| sk_sp<SkImage> tux = asset->getFrameData(0).image; |
| if (!tux) { |
| printf("Could not decode baby_tux.png in images subdirectory\n"); |
| return 1; |
| } |
| printf("Baby Tux is %d by %d pixels big\n", tux->width(), tux->height()); |
| |
| asset = frp->loadImageAsset("images", "CMYK.jpg", ""); |
| if (!asset || !asset->getFrameData(0).image) { |
| printf("Could not load/decode CMYK.jpg in images subdirectory\n"); |
| return 1; |
| } |
| |
| sk_sp<SkImage> cmyk = asset->getFrameData(0).image; |
| if (!cmyk) { |
| printf("Could not decode CMYK.jpg in images subdirectory\n"); |
| return 1; |
| } |
| printf("CMYK is %d by %d pixels big\n", cmyk->width(), cmyk->height()); |
| |
| return 0; |
| } |