KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > riotfamily > common > image > ImageMagickCropper


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1
3  * The contents of this file are subject to the Mozilla Public License Version
4  * 1.1 (the "License"); you may not use this file except in compliance with
5  * the License. You may obtain a copy of the License at
6  * http://www.mozilla.org/MPL/
7  *
8  * Software distributed under the License is distributed on an "AS IS" basis,
9  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10  * for the specific language governing rights and limitations under the
11  * License.
12  *
13  * The Original Code is Riot.
14  *
15  * The Initial Developer of the Original Code is
16  * Neteye GmbH.
17  * Portions created by the Initial Developer are Copyright (C) 2006
18  * the Initial Developer. All Rights Reserved.
19  *
20  * Contributor(s):
21  * Felix Gnass [fgnass at neteye dot de]
22  *
23  * ***** END LICENSE BLOCK ***** */

24 package org.riotfamily.common.image;
25
26 import java.io.File JavaDoc;
27 import java.io.IOException JavaDoc;
28 import java.util.ArrayList JavaDoc;
29
30 import org.riotfamily.common.io.CommandUtils;
31 import org.springframework.util.StringUtils;
32
33 /**
34  * @author Felix Gnass [fgnass at neteye dot de]
35  *
36  */

37 public class ImageMagickCropper implements ImageCropper {
38
39     private String JavaDoc convertCommand = "convert";
40     
41     private boolean repage = true;
42
43     public void setConvertCommand(String JavaDoc convertCommand) {
44         this.convertCommand = convertCommand;
45     }
46     
47     /**
48      * Sets whether the "+repage" operation should be used. If set to
49      * <code>false</code>, "-page +0+0" is used instead (for IM 5 and earlier).
50      * Default is <code>true</code>
51      */

52     public void setRepage(boolean repage) {
53         this.repage = repage;
54     }
55
56     public void cropImage(File JavaDoc source, File JavaDoc dest, int width, int height,
57             int x, int y, int scaledWidth) throws IOException JavaDoc {
58         
59         ArrayList JavaDoc cmd = new ArrayList JavaDoc();
60         cmd.add(convertCommand);
61         cmd.add(source.getAbsolutePath());
62         cmd.add("-resize");
63         cmd.add(scaledWidth + "x>");
64         cmd.add("-crop");
65         cmd.add(width + "x" + height + "+" + x + "+" + y);
66         if (repage) {
67             cmd.add("+repage");
68         }
69         else {
70             cmd.add("-page");
71             cmd.add("+0+0");
72         }
73         cmd.add("-quality");
74         cmd.add("100");
75         
76         cmd.add(dest.getAbsolutePath());
77         CommandUtils.exec(StringUtils.toStringArray(cmd));
78     }
79     
80 }
81
Popular Tags