git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1863601 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_1_1
@@ -244,9 +244,9 @@ public class BitmapImageRenderer implements ImageRenderer { | |||
} | |||
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); | |||
@@ -263,16 +263,22 @@ public class BitmapImageRenderer implements ImageRenderer { | |||
@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); | |||
} | |||
@@ -30,10 +30,12 @@ import java.io.IOException; | |||
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; | |||
@@ -89,16 +91,7 @@ public class HemfImageRenderer implements ImageRenderer { | |||
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 |
@@ -30,6 +30,7 @@ import java.io.IOException; | |||
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; | |||
@@ -93,17 +94,8 @@ public class HwmfImageRenderer implements ImageRenderer { | |||
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 |