Add image-hint for low-color images.
For low-color images, it may be better to not use color-palettes. Users should treat this as one another hint (as with Photo & Picture) and another parameter for tuning the compression density. The optimum compression can still be obtained by running (outer loop) compression with all possible tunable parameters. Change-Id: Icb1a4face2a84774e16e801aee4a8ae97e232e8a
This commit is contained in:
parent
4eb7aa64da
commit
dd1c3873fe
2
README
2
README
@ -168,7 +168,7 @@ options:
|
||||
-noalpha ............... discard any transparency information.
|
||||
-lossless .............. Encode image losslessly.
|
||||
-hint <string> ......... Specify image characteristics hint.
|
||||
One of: photo or picture
|
||||
One of: photo, picture or graph.
|
||||
|
||||
-short ................. condense printed message
|
||||
-quiet ................. don't print anything.
|
||||
|
@ -844,7 +844,7 @@ static void HelpLong(void) {
|
||||
printf(" -noalpha ............... discard any transparency information.\n");
|
||||
printf(" -lossless .............. Encode image losslessly.\n");
|
||||
printf(" -hint <string> ......... Specify image characteristics hint.\n");
|
||||
printf(" One of: photo or picture\n");
|
||||
printf(" One of: photo, picture or graph\n");
|
||||
|
||||
printf("\n");
|
||||
printf(" -short ................. condense printed message\n");
|
||||
@ -973,6 +973,8 @@ int main(int argc, const char *argv[]) {
|
||||
config.image_hint = WEBP_HINT_PHOTO;
|
||||
} else if (!strcmp(argv[c], "picture")) {
|
||||
config.image_hint = WEBP_HINT_PICTURE;
|
||||
} else if (!strcmp(argv[c], "graph")) {
|
||||
config.image_hint = WEBP_HINT_GRAPH;
|
||||
} else {
|
||||
fprintf(stderr, "Error! Unrecognized image hint: %s\n", argv[c]);
|
||||
goto Error;
|
||||
|
@ -164,7 +164,7 @@ Encode the image without any loss.
|
||||
.TP
|
||||
.B \-hint string
|
||||
Specify the hint about input image type. Possible values are:
|
||||
\fBphoto\fP, and \fBpicture\fP.
|
||||
\fBphoto\fP, \fBpicture\fP or \fBgraph\fP.
|
||||
.TP
|
||||
.B \-noasm
|
||||
Disable all assembly optimizations.
|
||||
|
@ -120,7 +120,7 @@ int WebPValidateConfig(const WebPConfig* config) {
|
||||
return 0;
|
||||
if (config->lossless < 0 || config->lossless > 1)
|
||||
return 0;
|
||||
if (config->image_hint > WEBP_HINT_PHOTO)
|
||||
if (config->image_hint >= WEBP_HINT_LAST)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ static int VP8LEncAnalyze(VP8LEncoder* const enc, WebPImageHint image_hint) {
|
||||
const WebPPicture* const pic = enc->pic_;
|
||||
assert(pic != NULL && pic->argb != NULL);
|
||||
|
||||
enc->use_palette_ =
|
||||
enc->use_palette_ = (image_hint == WEBP_HINT_GRAPH) ? 0 :
|
||||
AnalyzeAndCreatePalette(pic, enc->palette_, &enc->palette_size_);
|
||||
if (!enc->use_palette_) {
|
||||
if (image_hint == WEBP_HINT_DEFAULT) {
|
||||
@ -162,7 +162,6 @@ static int VP8LEncAnalyze(VP8LEncoder* const enc, WebPImageHint image_hint) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int GetHuffBitLengthsAndCodes(
|
||||
const VP8LHistogramSet* const histogram_image,
|
||||
HuffmanTreeCode* const huffman_codes) {
|
||||
|
@ -69,7 +69,9 @@ WEBP_EXTERN(size_t) WebPEncodeLosslessBGRA(const uint8_t* bgra,
|
||||
typedef enum {
|
||||
WEBP_HINT_DEFAULT = 0, // default preset.
|
||||
WEBP_HINT_PICTURE, // digital picture, like portrait, inner shot
|
||||
WEBP_HINT_PHOTO // outdoor photograph, with natural lighting
|
||||
WEBP_HINT_PHOTO, // outdoor photograph, with natural lighting
|
||||
WEBP_HINT_GRAPH, // Discrete tone image (graph, map-tile etc).
|
||||
WEBP_HINT_LAST
|
||||
} WebPImageHint;
|
||||
|
||||
typedef struct {
|
||||
|
Loading…
Reference in New Issue
Block a user