实现类似于Github的随机形状、随机颜色 像素风格头像

这篇博客分享了一种实现类似Github风格的随机形状、随机颜色像素头像的方法。提供了Java和Go两个版本的代码实现,旨在娱乐。代码中常量可调整,包括256色阶。
摘要由CSDN通过智能技术生成

just for fun

代码可以直接运行,所有参数都提取成了常量,几乎都可以修改(除了256色阶)

Java 版本
package graph;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 随机产生类似Github的马赛克风格头像
 * @author LLH
 */
public class GenerateMosaicHeadImg {
   

    /** 背景颜色 */
    private final static Color BACK_GROUND_COLOR = new Color(238, 238, 238);
    /** 图片宽 */
    private final static int IMG_WIDTH = 360;
    /** 图片高 */
    private final static int IMG_HEIGHT = 360;
    /** 图片边缘内边距 */
    private final static int PADDING = 30;
    /** 填充比率,越接近1,有色色块出现几率越高 */
    private final static double RADIO = 0.45;
    /** 每边矩形数量(建议>=5) */
    private final static int BLOCK_NUM = 9;
    /** 颜色差值评价值(越大颜色越鲜艳) */
    private final static int COLOR_DIFF_EVALUATION = 100;
    /** 基色阶数极限 */
    private final static int COLOR_LIMIT = 256;
    /** 保存路径 */
    private final static String DIR = "D://headImg/";

    public static void main(String[] args) throws IOException {
   
        //得到图片缓冲区
        BufferedImage bi = new BufferedImage
                (IMG_WIDTH, IMG_HEIGHT, BufferedImage.TYPE_INT_RGB);

        //得到它的绘制环境(这张图片的笔)
        Graphics2D g2 = (Graphics2D) bi.getGraphics();

        //设置背景颜色
        g2.setColor(BACK_GROUND_COLOR);
        g2.fillRect(0, 0, IMG_WIDTH, IMG_HEIGHT);

        // 随机颜色
        Color mainColor = getRandomColor();

        // 随机生成有效块坐标集合
        List<Point> pointList = getRandomPointList(RADIO);

        // 填充图形
        fillGraph(g2, pointList, mainColor);

        File file = new File(DIR);
        if (!file.exists()) {
   
            file.mkdirs();
        }

        // 输出
        ImageIO.write(bi,"JPG",
                new FileOutputStream(DIR+System.currentTimeMillis()+".jpg"));//保存图片 JPEG表示保存格式
    }

    /**
     * 填充图形
     * @param g2        画笔
     * @param pointList 填充块坐标
     * @param mainColor 填充颜色
     */
    private static void 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值