git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1863601 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_1_1
} | } | ||||
double w_old = img.getWidth(); | double w_old = img.getWidth(); | ||||
double h_old = img.getHeight(); | 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 w_new = dim.getWidth(); | ||||
double h_new = dim.getHeight(); | double h_new = dim.getHeight(); | ||||
BufferedImage scaled = new BufferedImage((int)w_new, (int)h_new, BufferedImage.TYPE_INT_ARGB); | |||||
AffineTransform at = new AffineTransform(); | AffineTransform at = new AffineTransform(); | ||||
at.scale(w_new/w_old, h_new/h_old); | at.scale(w_new/w_old, h_new/h_old); | ||||
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); | AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); | ||||
@Override | @Override | ||||
public void setAlpha(double alpha) { | 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 java.io.InputStream; | ||||
import org.apache.poi.hemf.usermodel.HemfPicture; | 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.draw.ImageRenderer; | ||||
import org.apache.poi.sl.usermodel.PictureData; | import org.apache.poi.sl.usermodel.PictureData; | ||||
import org.apache.poi.util.Units; | import org.apache.poi.util.Units; | ||||
@SuppressWarnings("unused") | |||||
public class HemfImageRenderer implements ImageRenderer { | public class HemfImageRenderer implements ImageRenderer { | ||||
HemfPicture image; | HemfPicture image; | ||||
double alpha; | double alpha; | ||||
image.draw(g, new Rectangle2D.Double(0,0,dim.getWidth(),dim.getHeight())); | image.draw(g, new Rectangle2D.Double(0,0,dim.getWidth(),dim.getHeight())); | ||||
g.dispose(); | 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 | @Override |
import java.io.InputStream; | import java.io.InputStream; | ||||
import org.apache.poi.hwmf.usermodel.HwmfPicture; | 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.DrawPictureShape; | ||||
import org.apache.poi.sl.draw.ImageRenderer; | import org.apache.poi.sl.draw.ImageRenderer; | ||||
import org.apache.poi.sl.usermodel.PictureData.PictureType; | import org.apache.poi.sl.usermodel.PictureData.PictureType; | ||||
g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); | g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); | ||||
image.draw(g, new Rectangle2D.Double(0,0,dim.getWidth(),dim.getHeight())); | image.draw(g, new Rectangle2D.Double(0,0,dim.getWidth(),dim.getHeight())); | ||||
g.dispose(); | 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 | @Override |