/*
* Copyright 2017 Google LLC
*
* Use of this source code is governed by a BSD - style license that can be
* found in the LICENSE file .
*/
#ifndef SkWebpEncoder_DEFINED
#define SkWebpEncoder_DEFINED
#include "include/core/SkRefCnt.h"
#include "include/core/SkSpan.h" // IWYU pragma: keep
#include "include/encode/SkEncoder.h"
#include "include/private/base/SkAPI.h"
class SkPixmap;
class SkWStream;
class SkData;
class GrDirectContext;
class SkImage;
struct skcms_ICCProfile;
namespace SkWebpEncoder {
enum class Compression {
kLossy,
kLossless,
};
struct SK_API Options {
/**
* | fCompression | determines whether we will use webp lossy or lossless compression .
*
* | fQuality | must be in [ 0 . 0 f , 100 . 0 f ] .
* If | fCompression | is kLossy , | fQuality | corresponds to the visual quality of the
* encoding . Decreasing the quality will result in a smaller encoded image .
* If | fCompression | is kLossless , | fQuality | corresponds to the amount of effort
* put into the encoding . Lower values will compress faster into larger files ,
* while larger values will compress slower into smaller files .
*
* This scheme is designed to match the libwebp API .
*/
Compression fCompression = Compression::kLossy;
float fQuality = 100 .0 f;
};
/**
* Encode the | src | pixels to the | dst | stream .
* | options | may be used to control the encoding behavior .
*
* Returns true on success . Returns false on an invalid or unsupported | src | .
*/
SK_API bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options);
/**
* Returns the encoded data for the pixmap , or nullptr on failure .
*/
SK_API sk_sp<SkData> Encode(const SkPixmap& src, const Options& options);
/**
* Encode the provided image and return the resulting bytes . If the image was created as
* a texture - backed image on a GPU context , that | ctx | must be provided so the pixels
* can be read before being encoded . For raster - backed images , | ctx | can be nullptr .
* | options | may be used to control the encoding behavior .
*
* Returns nullptr if the pixels could not be read or encoding otherwise fails .
*/
SK_API sk_sp<SkData> Encode(GrDirectContext* ctx, const SkImage* img, const Options& options);
/**
* Encode the | src | frames to the | dst | stream .
* | options | may be used to control the encoding behavior .
*
* The size of the first frame will be used as the canvas size . If any other frame does
* not match the canvas size , this is an error .
*
* Returns true on success . Returns false on an invalid or unsupported | src | .
*
* Note : libwebp API also supports set background color , loop limit and customize
* lossy / lossless for each frame . These could be added later as needed .
*/
SK_API bool EncodeAnimated(SkWStream* dst,
SkSpan<const SkEncoder::Frame> src,
const Options& options);
} // namespace SkWebpEncoder
#endif
Messung V0.5 in Prozent C=94 H=93 G=93
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-26)
¤
*© Formatika GbR, Deutschland