[magick-users] Joining 2 image halves (C++ api)
Anthony Thyssen
anthony at griffith.edu.au
Wed Oct 17 17:15:04 PDT 2007
bill_barrington at bellsouth.net on wrote...
| Hello,
|
| What I would like to do is very simple. Basically, I would like to use the C++ API to perform the same thing that the following 'convert' command line tool does:
| convert +append lhs rhs joined
|
| The C++ code follows. It's being called using JNI, hence the jints, etc. Can someone steer me to the solution? Thanks.
|
|
| jint joinImageHalves(jbyte *lhs, jint lhsLen, jbyte *rhs, jint rhsLen, jbyte* &image) {
| cerr << "Creating lhs" << endl;
| Blob lhsBlob((unsigned char*)(lhs), lhsLen);
| Image lhsImage(lhsBlob);
|
| cerr << "Creating rhs" << endl;
| Blob rhsBlob((unsigned char*)(rhs), rhsLen);
| Image rhsImage(rhsBlob);
|
| Geometry lhsGeom = lhsImage.size();
| Geometry rhsGeom = rhsImage.size();
| if(lhsGeom.width() != rhsGeom.width() || lhsGeom.height() != rhsGeom.height())
| throw invalid_argument("Geometry of image halves differs");
| int w = lhsGeom.width();
| int h = lhsGeom.height();
|
| Image joined(Geometry(w*2, h), Color("white")); // Canvas
| cerr << "Created canvas" << endl;
| joined.composite(lhsImage, 0, 0);
| joined.composite(rhsImage, w, 0);
|
| cerr << "Writing to blob" << endl;
| Blob imageBlob;
|
| // BLOWS UP HERE DURING THE WRITE TO THE BLOB
| joined.write(&imageBlob);
| // ...
I am quite certian that a AppendImages type of function is
available, however you will have to have both images form a single
image sequence (or list) rather than as separate images.
Remember IM 'image' data structure is a image sequence, of multiple
images. and that is what append would be expecting.
Sorry to be so vague, but I don't program in C++, but I know the
MagickCore Library and I am expert in the command line usage of IM.
Anthony Thyssen ( Graphics Enthusiast ) <A.Thyssen at griffith.edu.au>
-----------------------------------------------------------------------------
At 300 dpi you can tell she's wearing a swimsuit.
At 600 dpi you can tell it's wet.
At 1200 dpi you can tell it's painted on.
I suppose at 2400 dpi you can tell if the paint is giving her a rash.
-- Joshua R. Poulson
-----------------------------------------------------------------------------
IM Examples http://www.imagemagick.org/Usage/
More information about the Magick-users
mailing list