}
double w_old = img.getWidth();
double h_old = img.getHeight();
- BufferedImage scaled = new BufferedImage((int)w_old, (int)h_old, BufferedImage.TYPE_INT_ARGB);
double w_new = dim.getWidth();
double h_new = dim.getHeight();
+ BufferedImage scaled = new BufferedImage((int)w_new, (int)h_new, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(w_new/w_old, h_new/h_old);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
@Override
public void setAlpha(double alpha) {
- if (img == null) return;
+ img = setAlpha(img, alpha);
+ }
+
+ public static BufferedImage setAlpha(BufferedImage image, double alpha) {
+ if (image == null) {
+ return new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
+ }
- Dimension dim = getDimension();
- BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB);
- Graphics2D g = newImg.createGraphics();
- RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null);
- g.drawImage(img, op, 0, 0);
- g.dispose();
+ if (alpha == 0) {
+ return image;
+ }
- img = newImg;
+ float[] scalefactors = {1, 1, 1, (float)alpha};
+ float[] offsets = {0,0,0,0};
+ RescaleOp op = new RescaleOp(scalefactors, offsets, null);
+ return op.filter(image, null);
}
import java.io.InputStream;
import org.apache.poi.hemf.usermodel.HemfPicture;
+import org.apache.poi.sl.draw.BitmapImageRenderer;
import org.apache.poi.sl.draw.ImageRenderer;
import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.util.Units;
+@SuppressWarnings("unused")
public class HemfImageRenderer implements ImageRenderer {
HemfPicture image;
double alpha;
image.draw(g, new Rectangle2D.Double(0,0,dim.getWidth(),dim.getHeight()));
g.dispose();
- if (alpha != 0) {
- BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB);
- g = newImg.createGraphics();
- RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null);
- g.drawImage(bufImg, op, 0, 0);
- g.dispose();
- bufImg = newImg;
- }
-
- return bufImg;
+ return BitmapImageRenderer.setAlpha(bufImg, alpha);
}
@Override
import java.io.InputStream;
import org.apache.poi.hwmf.usermodel.HwmfPicture;
+import org.apache.poi.sl.draw.BitmapImageRenderer;
import org.apache.poi.sl.draw.DrawPictureShape;
import org.apache.poi.sl.draw.ImageRenderer;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
image.draw(g, new Rectangle2D.Double(0,0,dim.getWidth(),dim.getHeight()));
g.dispose();
-
- if (alpha != 0) {
- BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB);
- g = newImg.createGraphics();
- RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null);
- g.drawImage(bufImg, op, 0, 0);
- g.dispose();
- bufImg = newImg;
- }
-
- return bufImg;
+
+ return BitmapImageRenderer.setAlpha(bufImg, alpha);
}
@Override