diff --git a/core/src/main/java/app/photofox/vipsffm/VImage.java b/core/src/main/java/app/photofox/vipsffm/VImage.java index 292461f..42db5a7 100644 --- a/core/src/main/java/app/photofox/vipsffm/VImage.java +++ b/core/src/main/java/app/photofox/vipsffm/VImage.java @@ -10350,6 +10350,20 @@ public MemorySegment writeToMemory() throws VipsError { return imageMemory.reinterpret(arena, VipsRaw::g_free).asSlice(0, sizeOfImage); } + /// Renders this VImage into a single contiguous memory buffer and returns a new VImage backed by it, + /// mapping directly to the `vips_image_copy_memory` function. If this image is already a plain memory + /// image, libvips returns a new reference to it instead of copying. + /// + /// Use this before the draw operations ([VImage#drawRect], [VImage#drawLine] and friends), which modify + /// pixels in place and need a private memory image. It is also useful for caching an intermediate image + /// that is reused by several later operations, at the cost of holding all of its pixels in memory. + /// + /// To copy metadata without materialising pixels, use [VImage#copy] instead. + public VImage copyMemory() throws VipsError { + var imagePointer = VipsHelper.image_copy_memory(arena, this.address); + return new VImage(arena, imagePointer); + } + public static VImage newImage(Arena arena) throws VipsError { var newImagePointer = VipsHelper.image_new(arena); return new VImage(arena, newImagePointer); diff --git a/core/src/main/java/app/photofox/vipsffm/VipsHelper.java b/core/src/main/java/app/photofox/vipsffm/VipsHelper.java index 2686df9..d936497 100644 --- a/core/src/main/java/app/photofox/vipsffm/VipsHelper.java +++ b/core/src/main/java/app/photofox/vipsffm/VipsHelper.java @@ -1142,6 +1142,22 @@ public static boolean image_hasalpha(MemorySegment image) throws VipsError { return result == 1; } + /// Binding for: + /// ```c + /// VipsImage *vips_image_copy_memory(VipsImage *image) + /// ``` + public static MemorySegment image_copy_memory(Arena arena, MemorySegment image) throws VipsError { + if(!VipsValidation.isValidPointer(image)) { + VipsValidation.throwInvalidInputError("vips_image_copy_memory", "image"); + } + var result = VipsRaw.vips_image_copy_memory(image); + if(!VipsValidation.isValidPointer(result)) { + VipsValidation.throwInvalidOutputError("vips_image_copy_memory", "result"); + } + result = result.reinterpret(arena, VipsRaw::g_object_unref); + return result; + } + /// Binding for: /// ```c /// VipsImage **vips_value_get_array_image(const GValue *value, int *n) diff --git a/core/src/main/java/app/photofox/vipsffm/jextract/VipsRaw.java b/core/src/main/java/app/photofox/vipsffm/jextract/VipsRaw.java index 31231ac..32b2a5e 100644 --- a/core/src/main/java/app/photofox/vipsffm/jextract/VipsRaw.java +++ b/core/src/main/java/app/photofox/vipsffm/jextract/VipsRaw.java @@ -7493,6 +7493,64 @@ public static int vips_image_hasalpha(MemorySegment image) { } } + private static class vips_image_copy_memory { + public static final FunctionDescriptor DESC = FunctionDescriptor.of( + VipsRaw.C_POINTER, + VipsRaw.C_POINTER + ); + + public static final MemorySegment ADDR = VipsRaw.findOrThrow("vips_image_copy_memory"); + + public static final MethodHandle HANDLE = Linker.nativeLinker().downcallHandle(ADDR, DESC); + } + + /** + * Function descriptor for: + * {@snippet lang=c : + * extern VipsImage *vips_image_copy_memory(VipsImage *image) + * } + */ + public static FunctionDescriptor vips_image_copy_memory$descriptor() { + return vips_image_copy_memory.DESC; + } + + /** + * Downcall method handle for: + * {@snippet lang=c : + * extern VipsImage *vips_image_copy_memory(VipsImage *image) + * } + */ + public static MethodHandle vips_image_copy_memory$handle() { + return vips_image_copy_memory.HANDLE; + } + + /** + * Address for: + * {@snippet lang=c : + * extern VipsImage *vips_image_copy_memory(VipsImage *image) + * } + */ + public static MemorySegment vips_image_copy_memory$address() { + return vips_image_copy_memory.ADDR; + } + + /** + * {@snippet lang=c : + * extern VipsImage *vips_image_copy_memory(VipsImage *image) + * } + */ + public static MemorySegment vips_image_copy_memory(MemorySegment image) { + var mh$ = vips_image_copy_memory.HANDLE; + try { + if (TRACE_DOWNCALLS) { + traceDowncall("vips_image_copy_memory", image); + } + return (MemorySegment)mh$.invokeExact(image); + } catch (Throwable ex$) { + throw new AssertionError("should not reach here", ex$); + } + } + private static class vips_value_get_array_image { public static final FunctionDescriptor DESC = FunctionDescriptor.of( VipsRaw.C_POINTER, diff --git a/docs/app.photofox.vipsffm/app/photofox/vipsffm/VImage.html b/docs/app.photofox.vipsffm/app/photofox/vipsffm/VImage.html index fe6a111..6f8b2d2 100644 --- a/docs/app.photofox.vipsffm/app/photofox/vipsffm/VImage.html +++ b/docs/app.photofox.vipsffm/app/photofox/vipsffm/VImage.html @@ -415,6 +415,7 @@
doublecountlines(VipsDirection direction,
- VipsOption... args) vips_image_copy_memory function.doublecountlines(VipsDirection direction,
+ VipsOption... args) static VImagecsvload(Arena arena,
+static VImage
+csvload(Arena arena,
String filename,
VipsOption... args)
-
+
Load a CSV (comma-separated values) file.
-static VImage
-csvloadSource(Arena arena,
+static VImage
+csvloadSource(Arena arena,
VSource source,
VipsOption... args)
-
+
Exactly as csvload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a source.
-void
-csvsave(String filename,
+void
+csvsave(String filename,
VipsOption... args)
-
+
Writes the pixels in in to the filename as CSV (comma-separated values).
-void
-csvsaveTarget(VTarget target,
+void
+csvsaveTarget(VTarget target,
VipsOption... args)
-
+
As csvsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-static VImage
-dcrawload(Arena arena,
+static VImage
+dcrawload(Arena arena,
String filename,
VipsOption... args)
-
+
Read a RAW camera file using LibRaw.
-static VImage
-dcrawloadBuffer(Arena arena,
+static VImage
+dcrawloadBuffer(Arena arena,
VBlob buffer,
VipsOption... args)
-
+
Exactly as dcrawload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a buffer.
-static VImage
-dcrawloadSource(Arena arena,
+static VImage
+dcrawloadSource(Arena arena,
VSource source,
VipsOption... args)
-
+
Exactly as dcrawload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a source.
-
-dE00(VImage right,
- VipsOption... args)
-
-Calculate dE 00.
-
-dE76(VImage right,
+dE00(VImage right,
VipsOption... args)
-Calculate dE 76.
+Calculate dE 00.
-dECMC(VImage right,
+dE76(VImage right,
VipsOption... args)
-Calculate dE CMC.
+Calculate dE 76.
-double
-deviate(VipsOption... args)
+
+dECMC(VImage right,
+ VipsOption... args)
+Calculate dE CMC.
+
+double
+deviate(VipsOption... args)
+
This operation finds the standard deviation of all pixels in in.
-
-divide(VImage right,
+
+divide(VImage right,
VipsOption... args)
-
+
This operation calculates in1 / in2 and writes the result to out.
-void
-drawCircle(List<Double> ink,
+void
+drawCircle(List<Double> ink,
int cx,
int cy,
int radius,
VipsOption... args)
-
+
Draws a circle on image.
-void
-drawFlood(List<Double> ink,
+void
+drawFlood(List<Double> ink,
int x,
int y,
VipsOption... args)
-
+
Flood-fill image with ink, starting at position x, y.
-void
-drawImage(VImage sub,
+void
+drawImage(VImage sub,
int x,
int y,
VipsOption... args)
-
+
Draw sub on top of image at position x, y.
-void
-drawLine(List<Double> ink,
+void
+drawLine(List<Double> ink,
int x1,
int y1,
int x2,
int y2,
VipsOption... args)
-
+
Draws a 1-pixel-wide line on an image.
-void
-drawMask(List<Double> ink,
+void
+drawMask(List<Double> ink,
VImage mask,
int x,
int y,
VipsOption... args)
-
+
Draw mask on the image.
-void
-drawRect(List<Double> ink,
+void
+drawRect(List<Double> ink,
int left,
int top,
int width,
int height,
VipsOption... args)
-
+
Paint pixels within left, top, width, height in image with ink.
-void
-drawSmudge(int left,
+void
+drawSmudge(int left,
int top,
int width,
int height,
VipsOption... args)
-
+
Smudge a section of image.
-void
-dzsave(String filename,
+void
+dzsave(String filename,
VipsOption... args)
-
+
Save an image as a set of tiles at various resolutions.
-
-dzsaveBuffer(VipsOption... args)
-
+
+dzsaveBuffer(VipsOption... args)
+
As dzsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a memory buffer.
-void
-dzsaveTarget(VTarget target,
+void
+dzsaveTarget(VTarget target,
VipsOption... args)
-
+
As dzsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-
-embed(int x,
+
+embed(int x,
int y,
int width,
int height,
VipsOption... args)
-
+
The opposite of extractArea(int, int, int, int, app.photofox.vipsffm.VipsOption...): embed in within an image of
size width by height at position x, y.
-boolean
-
-
-
-extractArea(int left,
+boolean
+
+
+
+extractArea(int left,
int top,
int width,
int height,
VipsOption... args)
-
+
Extract an area from an image.
-
-extractBand(int band,
+
+extractBand(int band,
VipsOption... args)
-
+
Extract a band or bands from an image.
-static VImage
-eye(Arena arena,
+static VImage
+eye(Arena arena,
int width,
int height,
VipsOption... args)
-
+
Create a test pattern with increasing spatial frequency in X and
amplitude in Y.
-
-falsecolour(VipsOption... args)
-
+
+falsecolour(VipsOption... args)
+
Force in to 1 band, 8-bit, then transform to
a 3-band 8-bit image with a false colour
map.
-
-fastcor(VImage ref,
+
+fastcor(VImage ref,
VipsOption... args)
-
+
Calculate a fast correlation surface.
-
-fillNearest(VipsOption... args)
-
+
+fillNearest(VipsOption... args)
+
Fill outwards from every non-zero pixel in in, setting pixels in distance
and value.
-
-findTrim(VipsOption... args)
-
+
+findTrim(VipsOption... args)
+
Search in for the bounding box of the non-background area.
-static VImage
-fitsload(Arena arena,
+static VImage
+fitsload(Arena arena,
String filename,
VipsOption... args)
-
+
Read a FITS image file into a VIPS image.
-static VImage
-fitsloadSource(Arena arena,
+static VImage
+fitsloadSource(Arena arena,
VSource source,
VipsOption... args)
-
+
Exactly as fitsload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a source.
-void
-fitssave(String filename,
+void
+fitssave(String filename,
VipsOption... args)
-
+
Write a VIPS image to a file in FITS format.
-
-flatten(VipsOption... args)
-
+
+flatten(VipsOption... args)
+
Take the last band of in as an alpha and use it to blend the
remaining channels with background.
-
-flip(VipsDirection direction,
+
+flip(VipsDirection direction,
VipsOption... args)
-
+
Flips an image left-right or up-down.
-
-float2rad(VipsOption... args)
-
+
+float2rad(VipsOption... args)
+
Convert a three-band float image to Radiance 32-bit packed format.
-static VImage
-fractsurf(Arena arena,
+static VImage
+fractsurf(Arena arena,
int width,
int height,
double fractalDimension,
VipsOption... args)
-
+
Generate an image of size width by height and fractal dimension
fractal_dimension.
-
-freqmult(VImage mask,
- VipsOption... args)
-
-Multiply in by mask in Fourier space.
-
-fwfft(VipsOption... args)
+freqmult(VImage mask,
+ VipsOption... args)
-Transform an image to Fourier space.
+Multiply in by mask in Fourier space.
-gamma(VipsOption... args)
+fwfft(VipsOption... args)
+Transform an image to Fourier space.
+
+
+gamma(VipsOption... args)
+
Calculate in ** (1 / exponent), normalising to the maximum range of the
input type.
-
-gaussblur(double sigma,
+
+gaussblur(double sigma,
VipsOption... args)
-
+
This operator runs gaussmat(java.lang.foreign.Arena, double, double, app.photofox.vipsffm.VipsOption...) and convsep(app.photofox.vipsffm.VImage, app.photofox.vipsffm.VipsOption...) for
you on an image.
-static VImage
-gaussmat(Arena arena,
+static VImage
+gaussmat(Arena arena,
double sigma,
double minAmpl,
VipsOption... args)
-
+
Creates a circularly symmetric Gaussian image of radius
sigma.
-static VImage
-gaussnoise(Arena arena,
+static VImage
+gaussnoise(Arena arena,
int width,
int height,
VipsOption... args)
-
+
Make a one band float image of gaussian noise with the specified
distribution.
-
-
-
+
+
+
Helper function to get the metadata stored at name on this image, of type blob, or null
if not present
-
-
-
+
+
+
Helper function to get the metadata stored at name on this image, of type double, or null
if not present
-
-
-
+
+
+
Returns a list of all metadata entry names for this image
-int
-
-
-
-
-
+int
+
+
+
+
+
Helper function to get the metadata stored at name on this image, of type image, or null
if not present
-
-
-
+
+
+
Helper function to get the metadata stored at name on this image, of type int, or null
if not present
-
-getpoint(int x,
+
+getpoint(int x,
int y,
VipsOption... args)
-
+
Reads a single pixel on an image.
-
-
-
+
+
+
Helper function to get the metadata stored at name on this image, of type string, or null
if not present
-
-
-
+
+
+
Gets the raw MemorySegment (C pointer) for this VipsImage struct
-int
-getWidth()
-
-static VImage
-gifload(Arena arena,
+int
+getWidth()
+
+static VImage
+gifload(Arena arena,
String filename,
VipsOption... args)
-
+
Read a GIF file into a libvips image.
-static VImage
-gifloadBuffer(Arena arena,
+static VImage
+gifloadBuffer(Arena arena,
VBlob buffer,
VipsOption... args)
-
+
Exactly as gifload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a memory buffer.
-static VImage
-gifloadSource(Arena arena,
+static VImage
+gifloadSource(Arena arena,
VSource source,
VipsOption... args)
-
+
Exactly as gifload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a source.
-void
-gifsave(String filename,
+void
+gifsave(String filename,
VipsOption... args)
-
+
Write to a file in GIF format.
-
-gifsaveBuffer(VipsOption... args)
-
+
+gifsaveBuffer(VipsOption... args)
+
As gifsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a memory buffer.
-void
-gifsaveTarget(VTarget target,
+void
+gifsaveTarget(VTarget target,
VipsOption... args)
-
+
As gifsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-
-globalbalance(VipsOption... args)
-
+
+globalbalance(VipsOption... args)
+
globalbalance(app.photofox.vipsffm.VipsOption...) can be used to remove contrast differences in
an assembled mosaic.
-
-gravity(VipsCompassDirection direction,
+
+gravity(VipsCompassDirection direction,
int width,
int height,
VipsOption... args)
-
+
The opposite of extractArea(int, int, int, int, app.photofox.vipsffm.VipsOption...): place in within an image of
size width by height at a certain gravity.
-static VImage
-grey(Arena arena,
+static VImage
+grey(Arena arena,
int width,
int height,
VipsOption... args)
-
+
Create a one-band float image with the left-most column zero and the
right-most 1.
-
-grid(int tileHeight,
+
+grid(int tileHeight,
int across,
int down,
VipsOption... args)
-
+
Chop a tall thin image up into a set of tiles, lay the tiles out in a grid.
-boolean
-hasAlpha()
-
-int
-hashCode()
+boolean
+hasAlpha()
-static VImage
-heifload(Arena arena,
- String filename,
- VipsOption... args)
-
-Read a HEIF image file into a VIPS image.
-
+int
+hashCode()
+
static VImage
-heifloadBuffer(Arena arena,
- VBlob buffer,
+heifload(Arena arena,
+ String filename,
VipsOption... args)
Read a HEIF image file into a VIPS image.
static VImage
-heifloadSource(Arena arena,
- VSource source,
+heifloadBuffer(Arena arena,
+ VBlob buffer,
VipsOption... args)
+Read a HEIF image file into a VIPS image.
+
+static VImage
+heifloadSource(Arena arena,
+ VSource source,
+ VipsOption... args)
+
Exactly as heifload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a source.
-void
-heifsave(String filename,
+void
+heifsave(String filename,
VipsOption... args)
-
+
Write a VIPS image to a file in HEIF format.
-
-heifsaveBuffer(VipsOption... args)
-
+
+heifsaveBuffer(VipsOption... args)
+
As heifsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a memory buffer.
-void
-heifsaveTarget(VTarget target,
+void
+heifsaveTarget(VTarget target,
VipsOption... args)
-
-As heifsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-
-
-histCum(VipsOption... args)
-Form cumulative histogram.
+As heifsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-double
-histEntropy(VipsOption... args)
+
+histCum(VipsOption... args)
-Estimate image entropy from a histogram.
+Form cumulative histogram.
-
-histEqual(VipsOption... args)
+double
+histEntropy(VipsOption... args)
-Histogram-equalise in.
+Estimate image entropy from a histogram.
-histFind(VipsOption... args)
+histEqual(VipsOption... args)
-Find the histogram of in.
+Histogram-equalise in.
-histFindIndexed(VImage index,
- VipsOption... args)
+histFind(VipsOption... args)
-Make a histogram of in, but use image index to pick the bins.
+Find the histogram of in.
-histFindNdim(VipsOption... args)
+histFindIndexed(VImage index,
+ VipsOption... args)
+Make a histogram of in, but use image index to pick the bins.
+
+
+histFindNdim(VipsOption... args)
+
Make a one, two or three dimensional histogram of a 1, 2 or
3 band image.
-boolean
-histIsmonotonic(VipsOption... args)
-
+boolean
+histIsmonotonic(VipsOption... args)
+
Test in for monotonicity.
-
-histLocal(int width,
+
+histLocal(int width,
int height,
VipsOption... args)
-
+
Performs local histogram equalisation on in using a
window of size width by height centered on the input pixel.
-
-histMatch(VImage ref,
- VipsOption... args)
-
-Adjust in to match ref.
-
-histNorm(VipsOption... args)
+histMatch(VImage ref,
+ VipsOption... args)
-Normalise histogram.
+Adjust in to match ref.
-histPlot(VipsOption... args)
+histNorm(VipsOption... args)
-Plot a 1 by any or any by 1 image file as a max by any or
-any by max image using these rules:
+Normalise histogram.
-houghCircle(VipsOption... args)
+histPlot(VipsOption... args)
-Find the circular Hough transform of an image.
+Plot a 1 by any or any by 1 image file as a max by any or
+any by max image using these rules:
-houghLine(VipsOption... args)
+houghCircle(VipsOption... args)
-Find the line Hough transform for in.
+Find the circular Hough transform of an image.
-HSV2sRGB(VipsOption... args)
+houghLine(VipsOption... args)
-Convert HSV to sRGB.
+Find the line Hough transform for in.
-iccExport(VipsOption... args)
+HSV2sRGB(VipsOption... args)
-Export an image from D65 LAB to device space with an ICC profile.
+Convert HSV to sRGB.
-iccImport(VipsOption... args)
+iccExport(VipsOption... args)
-Import an image from device space to D65 LAB with an ICC profile.
+Export an image from D65 LAB to device space with an ICC profile.
-iccTransform(String outputProfile,
- VipsOption... args)
+iccImport(VipsOption... args)
+Import an image from device space to D65 LAB with an ICC profile.
+
+
+iccTransform(String outputProfile,
+ VipsOption... args)
+
Transform an image with a pair of ICC profiles.
-static VImage
-identity(Arena arena,
+static VImage
+identity(Arena arena,
VipsOption... args)
-
+
Creates an identity lookup table, ie.
-
-ifthenelse(VImage in1,
+
+ifthenelse(VImage in1,
VImage in2,
VipsOption... args)
-
+
This operation scans the condition image cond
and uses it to select pixels from either the then image in1 or the else
image in2.
-
-insert(VImage sub,
+
+insert(VImage sub,
int x,
int y,
VipsOption... args)
-
-Insert sub into main at position x, y.
-
-
-invert(VipsOption... args)
-For unsigned formats, this operation calculates (max - in), eg.
+Insert sub into main at position x, y.
-invertlut(VipsOption... args)
+invert(VipsOption... args)
-Given a mask of target values and real values, generate a LUT which
-will map reals to targets.
+For unsigned formats, this operation calculates (max - in), eg.
-invfft(VipsOption... args)
+invertlut(VipsOption... args)
-Transform an image from Fourier space to real space.
+Given a mask of target values and real values, generate a LUT which
+will map reals to targets.
-join(VImage in2,
+invfft(VipsOption... args)
+
+Transform an image from Fourier space to real space.
+
+
+join(VImage in2,
VipsDirection direction,
VipsOption... args)
-
+
Join in1 and in2 together, left-right or up-down depending on the value
of direction.
-static VImage
-jp2kload(Arena arena,
+static VImage
+jp2kload(Arena arena,
String filename,
VipsOption... args)
-
+
Read a JPEG2000 image.
-static VImage
-jp2kloadBuffer(Arena arena,
+static VImage
+jp2kloadBuffer(Arena arena,
VBlob buffer,
VipsOption... args)
-
+
Exactly as jp2kload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a buffer.
-static VImage
-jp2kloadSource(Arena arena,
+static VImage
+jp2kloadSource(Arena arena,
VSource source,
VipsOption... args)
-
+
Exactly as jp2kload(java.lang.foreign.Arena, java.lang.String, app.photofox.vipsffm.VipsOption...), but read from a source.
-void
-jp2ksave(String filename,
+void
+jp2ksave(String filename,
VipsOption... args)
-
+
Write a VIPS image to a file in JPEG2000 format.
-
-jp2ksaveBuffer(VipsOption... args)
-
+
+jp2ksaveBuffer(VipsOption... args)
+
As jp2ksave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-void
-jp2ksaveTarget(VTarget target,
+void
+jp2ksaveTarget(VTarget target,
VipsOption... args)
-
+
As jp2ksave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a target.
-static VImage
-jpegload(Arena arena,
+static VImage
+jpegload(Arena arena,
String filename,
VipsOption... args)
-
+
Read a JPEG file into a VIPS image.
-static VImage
-jpegloadBuffer(Arena arena,
+static VImage
+jpegloadBuffer(Arena arena,
VBlob buffer,
VipsOption... args)
-
+
Read a JPEG-formatted memory block into a VIPS image.
-static VImage
-jpegloadSource(Arena arena,
+static VImage
+jpegloadSource(Arena arena,
VSource source,
VipsOption... args)
-
+
Read a JPEG-formatted memory block into a VIPS image.
-void
-jpegsave(String filename,
+void
+jpegsave(String filename,
VipsOption... args)
-
+
Write a VIPS image to a file as JPEG.
-
-jpegsaveBuffer(VipsOption... args)
-
+
+jpegsaveBuffer(VipsOption... args)
+
As jpegsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save to a memory buffer.
-void
-jpegsaveMime(VipsOption... args)
-
+void
+jpegsaveMime(VipsOption... args)
+
As jpegsave(java.lang.String, app.photofox.vipsffm.VipsOption...), but save as a mime jpeg on stdout.
-void
-jpegsaveTarget(VTarget target,
+void
+