this is my npub express as ascii values and then processed as Grey rectangles 
Discussion
here is the code and you can run it using https://processing.org/
change the string input with your npub or make better art by changing the stuff after void draw
String input = "npub1tltf8es60957eawprkl4ecs2akkpe6n3wgt4tvphj4vef0mqvxasv6ve7g";
int[] values = new int[input.length()];
void setup() {
size(640, 360);
for (int i = 0; i < input.length(); i++) {
values[i] = (int) input.charAt(i);
}
noLoop();
}
void draw() {
background(255);
int rectWidth = width / values.length;
int rectHeight = height / 2;
for (int i = 0; i < values.length; i++) {
float grayValue = map(values[i], 0, 255, 0, 255);
fill(grayValue);
rect(i * rectWidth, height / 2 - rectHeight / 2, rectWidth, rectHeight);
}
}