springboot项目 在做图片处理的时候做过圆形处理 用的 Ellipse2D.Double
现在想请问一下有没有什么方法可以实现同等类似的功能 不过是处理正正六边形 而不是圆形
public void updateForm(String url) throws IOException {
BufferedImage bi1 = ImageIO.read(new File(url));
// 根据需要是否使用 BufferedImage.TYPE_INT_ARGB
BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(),
BufferedImage.TYPE_INT_RGB);
Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1
.getHeight());
Graphics2D g2 = bi2.createGraphics();
g2.setBackground(Color.WHITE);
g2.fill(new Rectangle(bi2.getWidth(), bi2.getHeight()));
g2.setClip(shape);
// 使用 setRenderingHint 设置抗锯齿
g2.drawImage(bi1, 0, 0, null);
g2.dispose();
try {
ImageIO.write(bi2, "jpg", new File(url));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
上面是圆形处理 Ellipse2D.Double这里想换成处理成正六边形的 请教一下各位大佬
你是要绘制六边形吗?可以使用 Graphics2D 自己绘制;
如果是要显示六边形头像,个人觉得可以在矩形图像区域上叠加一个中间为六边形掩板实现。
类似的问题回答过
首先画一个正方形的图片
然后依次在左上右上左下右下画4个白色的,直角边长为1/4和1/4*sqrt(3)个正方形边长的60/30度直角三角形切掉这些图形。
https://blog.csdn.net/ihtml5/article/details/86063205
可以参考下这个下面这个是demo
http://works.ibeeger.com/dev/canvas/sanjiaoxing.html?60
public void updateForm(String url) throws IOException { BufferedImage bi1 = ImageIO.read(new File(url)); // 根据需要是否使用 BufferedImage.TYPE_INT_ARGB BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(), BufferedImage.TYPE_INT_RGB); Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1 .getHeight()); Graphics2D g2 = bi2.createGraphics(); g2.setBackground(Color.WHITE); g2.fill(new Rectangle(bi2.getWidth(), bi2.getHeight())); g2.setClip(shape); // 使用 setRenderingHint 设置抗锯齿 g2.drawImage(bi1, 0, 0, null); g2.dispose(); try { ImageIO.write(bi2, "jpg", new File(url)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }