Ensure affineInterpolator is correctly finalised (#3083)

This commit is contained in:
Kleis Auke Wolthuizen 2022-02-09 15:45:11 +01:00 committed by GitHub
parent 4feee506cf
commit 115a6b10f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View File

@ -518,12 +518,14 @@ class PipelineWorker : public Napi::AsyncWorker {
MultiPageUnsupported(nPages, "Affine"); MultiPageUnsupported(nPages, "Affine");
std::vector<double> background; std::vector<double> background;
std::tie(image, background) = sharp::ApplyAlpha(image, baton->affineBackground, shouldPremultiplyAlpha); std::tie(image, background) = sharp::ApplyAlpha(image, baton->affineBackground, shouldPremultiplyAlpha);
vips::VInterpolate interp = vips::VInterpolate::new_from_name(
const_cast<char*>(baton->affineInterpolator.data()));
image = image.affine(baton->affineMatrix, VImage::option()->set("background", background) image = image.affine(baton->affineMatrix, VImage::option()->set("background", background)
->set("idx", baton->affineIdx) ->set("idx", baton->affineIdx)
->set("idy", baton->affineIdy) ->set("idy", baton->affineIdy)
->set("odx", baton->affineOdx) ->set("odx", baton->affineOdx)
->set("ody", baton->affineOdy) ->set("ody", baton->affineOdy)
->set("interpolate", baton->affineInterpolator)); ->set("interpolate", interp));
} }
// Extend edges // Extend edges
@ -1428,7 +1430,7 @@ Napi::Value pipeline(const Napi::CallbackInfo& info) {
baton->affineIdy = sharp::AttrAsDouble(options, "affineIdy"); baton->affineIdy = sharp::AttrAsDouble(options, "affineIdy");
baton->affineOdx = sharp::AttrAsDouble(options, "affineOdx"); baton->affineOdx = sharp::AttrAsDouble(options, "affineOdx");
baton->affineOdy = sharp::AttrAsDouble(options, "affineOdy"); baton->affineOdy = sharp::AttrAsDouble(options, "affineOdy");
baton->affineInterpolator = vips::VInterpolate::new_from_name(sharp::AttrAsStr(options, "affineInterpolator").data()); baton->affineInterpolator = sharp::AttrAsStr(options, "affineInterpolator");
baton->removeAlpha = sharp::AttrAsBool(options, "removeAlpha"); baton->removeAlpha = sharp::AttrAsBool(options, "removeAlpha");
baton->ensureAlpha = sharp::AttrAsDouble(options, "ensureAlpha"); baton->ensureAlpha = sharp::AttrAsDouble(options, "ensureAlpha");
if (options.Has("boolean")) { if (options.Has("boolean")) {

View File

@ -126,7 +126,7 @@ struct PipelineBaton {
double affineIdy; double affineIdy;
double affineOdx; double affineOdx;
double affineOdy; double affineOdy;
vips::VInterpolate affineInterpolator; std::string affineInterpolator;
int jpegQuality; int jpegQuality;
bool jpegProgressive; bool jpegProgressive;
std::string jpegChromaSubsampling; std::string jpegChromaSubsampling;
@ -268,7 +268,7 @@ struct PipelineBaton {
affineIdy(0), affineIdy(0),
affineOdx(0), affineOdx(0),
affineOdy(0), affineOdy(0),
affineInterpolator(vips::VInterpolate::new_from_name("bicubic")), affineInterpolator("bicubic"),
jpegQuality(80), jpegQuality(80),
jpegProgressive(false), jpegProgressive(false),
jpegChromaSubsampling("4:2:0"), jpegChromaSubsampling("4:2:0"),