modified scott native to accept arbitrary values

This commit is contained in:
murm 2023-03-22 04:49:51 -04:00
parent 513efc4436
commit 44f8f30ccc
3 changed files with 31 additions and 3 deletions

BIN
assets/images/jjosmap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,20 @@
import ImageCommand from "../../classes/imageCommand.js";
class ScottCommand extends ImageCommand {
static category = "image-editing"
static description = "JJoS an image";
params = {
assetPath: "assets/images/jjos.png",
distortPath: "assets/images/jjosmap.png",
compx: 261,
compy: 126
};
static aliases = ["woz", "tv", "porn"];
static noImage = "You need to provide an image/GIF to JJoS!";
static command = "scott";
}
export default ScottCommand;

View file

@ -8,6 +8,11 @@ using namespace vips;
ArgumentMap Scott(string type, string *outType, char *BufferData, size_t BufferLength, ArgumentMap Scott(string type, string *outType, char *BufferData, size_t BufferLength,
ArgumentMap Arguments, size_t *DataSize) { ArgumentMap Arguments, size_t *DataSize) {
string basePath = GetArgument<string>(Arguments, "basePath"); string basePath = GetArgument<string>(Arguments, "basePath");
string assetPathIn = GetArgumentWithFallback<string>(Arguments, "assetPath", "assets/images/scott.png");
string distortPathIn = GetArgumentWithFallback<string>(Arguments, "distortPath", "assets/images/scottmap.png");
int compx = GetArgumentWithFallback<int>(Arguments, "compx", 127);
int compy = GetArgumentWithFallback<int>(Arguments, "compy", 181);
VOption *options = VImage::option()->set("access", "sequential"); VOption *options = VImage::option()->set("access", "sequential");
@ -21,10 +26,13 @@ ArgumentMap Scott(string type, string *outType, char *BufferData, size_t BufferL
int pageHeight = vips_image_get_page_height(in.get_image()); int pageHeight = vips_image_get_page_height(in.get_image());
int nPages = vips_image_get_n_pages(in.get_image()); int nPages = vips_image_get_n_pages(in.get_image());
string assetPath = basePath + "assets/images/scott.png"; string assetPath = basePath + assetPathIn;
VImage bg = VImage::new_from_file(assetPath.c_str()); VImage bg = VImage::new_from_file(assetPath.c_str());
string distortPath = basePath + "assets/images/scottmap.png"; int bgwidth = bg.width();
int bgpageHeight = vips_image_get_page_height(bg.get_image());
string distortPath = basePath + distortPathIn;
VImage distort = VImage::new_from_file(distortPath.c_str()); VImage distort = VImage::new_from_file(distortPath.c_str());
VImage distortImage = VImage distortImage =
@ -40,7 +48,7 @@ ArgumentMap Scott(string type, string *outType, char *BufferData, size_t BufferL
VImage mapped = resized.mapim(distortImage) VImage mapped = resized.mapim(distortImage)
.extract_band(0, VImage::option()->set("n", 3)) .extract_band(0, VImage::option()->set("n", 3))
.bandjoin(distort[2]); .bandjoin(distort[2]);
VImage offset = mapped.embed(127, 181, 864, 481); VImage offset = mapped.embed(compx, compy, bgwidth, bgpageHeight);
VImage composited = bg.composite2(offset, VIPS_BLEND_MODE_OVER); VImage composited = bg.composite2(offset, VIPS_BLEND_MODE_OVER);
img.push_back(composited); img.push_back(composited);
} }