just4fun:神奇的代码生成好看的图片

原文链接:用三段 140 字符以内的代码生成一张 1024×1024 的图片


在VS2015下,试了一下生成下图的代码


生成ppm格式图片的代码如下:

#include<iostream>
#include<fstream>
#include<cmath>
#include<cstdlib>

#define DIM 1024
#define DM1 (DIM-1)

//平方square
#define _sq(x) ((x)*(x))
//三次方的绝对值absolute value of cube
#define _cb(x) abs((x)*(x)*(x))
//三次方根
#define _cr(x) (unsigned char)(pow((x), 1.0/3.0))

unsigned char GR(int, int);
unsigned char BL(int, int);
unsigned char RD(int, int);

void pixel_write(int, int);

FILE *fp;
int main()
{
	
	errno_t err = fopen_s(&fp, "art.ppm", "wb");
	fprintf_s(fp, "P6\n%d %d\n255\n", DIM, DIM);
	for (int i = 0; i < DIM; i++)
		for (int j = 0; j < DIM; j++)
			pixel_write(j, i);
	fclose(fp);

	return 0;
}

void pixel_write(int i, int j)
{
	static unsigned char color[3];
	color[0] = RD(i, j) & 255;
	color[1] = GR(i, j) & 255;
	color[2] = BL(i, j) & 255;
	fwrite(color, 1, 3, fp);
}

unsigned char RD(int i, int j)
{
#define r(n) (rand()%n)
	static char c[DIM][DIM];
	return!c[i][j]?c[i][j] = 
		!r(999) ? r(256) : RD((i + r(2)) % DIM, (j + r(2)) % 1024) : c[i][j];
}

unsigned char GR(int i, int j)
{
#define r(n) (rand()%n)
	static char c[DIM][DIM];
	return!c[i][j] ? c[i][j] =
		!r(999) ? r(256) : GR((i + r(2)) % DIM, (j + r(2)) % 1024) : c[i][j];
}

unsigned char BL(int i, int j)
{
#define r(n) (rand()%n)
	static char c[DIM][DIM];
	return!c[i][j] ? c[i][j] =
		!r(999) ? r(256) : BL((i + r(2)) % DIM, (j + r(2)) % 1024) : c[i][j];
}

用python将ppm格式图片转化为jpg

需要安装PIL库,安装过程如下:

转换格式的python脚本如下:

#!python3
from PIL import Image

img = Image.open('./art.ppm')
img.save('./art.jpg')
img.show()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值