1 | /* |
2 | * Copyright 2011 Google Inc. |
3 | * |
4 | * Use of this source code is governed by a BSD-style license that can be |
5 | * found in the LICENSE file. |
6 | */ |
7 | |
8 | #ifndef SkImageEncoder_DEFINED |
9 | #define SkImageEncoder_DEFINED |
10 | |
11 | #include "include/core/SkBitmap.h" |
12 | #include "include/core/SkData.h" |
13 | #include "include/core/SkEncodedImageFormat.h" |
14 | #include "include/core/SkStream.h" |
15 | |
16 | /** |
17 | * Encode SkPixmap in the given binary image format. |
18 | * |
19 | * @param dst results are written to this stream. |
20 | * @param src source pixels. |
21 | * @param format image format, not all formats are supported. |
22 | * @param quality range from 0-100, this is supported by jpeg and webp. |
23 | * higher values correspond to improved visual quality, but less compression. |
24 | * |
25 | * @return false iff input is bad or format is unsupported. |
26 | * |
27 | * Will always return false if Skia is compiled without image |
28 | * encoders. |
29 | * |
30 | * For SkEncodedImageFormat::kWEBP, if quality is 100, it will use lossless compression. Otherwise |
31 | * it will use lossy. |
32 | * |
33 | * For examples of encoding an image to a file or to a block of memory, |
34 | * see tools/ToolUtils.h. |
35 | */ |
36 | SK_API bool SkEncodeImage(SkWStream* dst, const SkPixmap& src, |
37 | SkEncodedImageFormat format, int quality); |
38 | |
39 | /** |
40 | * The following helper function wraps SkEncodeImage(). |
41 | */ |
42 | inline bool SkEncodeImage(SkWStream* dst, const SkBitmap& src, SkEncodedImageFormat f, int q) { |
43 | SkPixmap pixmap; |
44 | return src.peekPixels(&pixmap) && SkEncodeImage(dst, pixmap, f, q); |
45 | } |
46 | |
47 | /** |
48 | * Encode SkPixmap in the given binary image format. |
49 | * |
50 | * @param src source pixels. |
51 | * @param format image format, not all formats are supported. |
52 | * @param quality range from 0-100, this is supported by jpeg and webp. |
53 | * higher values correspond to improved visual quality, but less compression. |
54 | * |
55 | * @return encoded data or nullptr if input is bad or format is unsupported. |
56 | * |
57 | * Will always return nullptr if Skia is compiled without image |
58 | * encoders. |
59 | * |
60 | * For SkEncodedImageFormat::kWEBP, if quality is 100, it will use lossless compression. Otherwise |
61 | * it will use lossy. |
62 | */ |
63 | SK_API sk_sp<SkData> SkEncodePixmap(const SkPixmap& src, SkEncodedImageFormat format, int quality); |
64 | |
65 | /** |
66 | * Helper that extracts the pixmap from the bitmap, and then calls SkEncodePixmap() |
67 | */ |
68 | SK_API sk_sp<SkData> SkEncodeBitmap(const SkBitmap& src, SkEncodedImageFormat format, int quality); |
69 | |
70 | #endif // SkImageEncoder_DEFINED |
71 | |