Added tolerance option to uncaption, fixed nogif return type

This commit is contained in:
Essem 2022-02-17 08:46:02 -06:00
parent a82ae115f8
commit ec6fb7de37
No known key found for this signature in database
GPG key ID: 7D497397CC3A2A8C
4 changed files with 19 additions and 3 deletions

View file

@ -16,7 +16,7 @@ class SnapchatCommand extends ImageCommand {
static flags = [{
name: "position",
type: "number",
description: "Set the position of the caption as a decimal (0.0 is top, 1.0 is bottom)"
description: "Set the position of the caption as a decimal (0.0 is top, 1.0 is bottom, default is 0.5)"
}];
static requiresText = true;

View file

@ -1,7 +1,19 @@
import ImageCommand from "../../classes/imageCommand.js";
class UncaptionCommand extends ImageCommand {
params() {
const tolerance = parseFloat(this.specialArgs.tolerance);
return {
tolerance: isNaN(tolerance) ? 0.95 : tolerance
};
}
static description = "Removes the caption from an image";
static flags = [{
name: "tolerance",
type: "number",
description: "Set the shade tolerance for the caption detection (0.0 is highest, 1.0 is lowest, default is 0.95)"
}];
static noImage = "You need to provide an image/GIF to uncaption!";
static command = "uncaption";

View file

@ -13,6 +13,7 @@ Napi::Value Uncaption(const Napi::CallbackInfo &info) {
try {
Napi::Object obj = info[0].As<Napi::Object>();
Napi::Buffer<char> data = obj.Get("data").As<Napi::Buffer<char>>();
float tolerance = obj.Has("tolerance") ? obj.Get("tolerance").As<Napi::Number>().FloatValue() : 0.95;
string type = obj.Get("type").As<Napi::String>().Utf8Value();
int delay =
obj.Has("delay") ? obj.Get("delay").As<Napi::Number>().Int32Value() : 0;
@ -37,7 +38,7 @@ Napi::Value Uncaption(const Napi::CallbackInfo &info) {
ssize_t row;
for (row = 0; row < rows; ++row) {
ColorGray color = firstImage.pixelColor(0, row);
if (color.shade() < 0.95) {
if (color.shade() < tolerance) {
break;
}
}
@ -74,4 +75,4 @@ Napi::Value Uncaption(const Napi::CallbackInfo &info) {
} catch (...) {
throw Napi::Error::New(env, "Unknown error");
}
}
}

View file

@ -155,6 +155,9 @@ class ImageConnection {
case "image/webp":
type = "webp";
break;
default:
type = contentType;
break;
}
return { buffer: Buffer.from(await req.arrayBuffer()), type };
}