February 10, 2014

An example of Macroblock Artifacts produced by Databending JPGs.

Prepared for my online course on Skillshare: 

Glitch Art - Creating Design from Error: Databending Basics

Learn the basics of databending, familiarize yourself with the art and artifacts of working with different file formats, create stunning glitched GIFs.

Signup today by clicking the link above and receive 50% off enrollment.

February 8, 2014
Twice Databent GIF
I’m putting together class examples for my Skillshare offering:
Glitch Art - Creating Design from Error: Databending Basics
Sign up using the link above and get 50% off enrollment!
WOOT!

Twice Databent GIF

I’m putting together class examples for my Skillshare offering:

Glitch Art - Creating Design from Error: Databending Basics

Sign up using the link above and get 50% off enrollment!

WOOT!

February 8, 2014

There are still discounted tickets available for my Databending Basics class on Skillshare.

Use this link + code TUMBLR50 for a 50% discount on enrollment: http://skl.sh/1f22nqx

Glitch Art - Creating Design from Error: Databending Basics will show you how to use text editors and hex editors to make glitch art and then turn a series of glitched images into an animated GIF. We begin with a brief introduction to what Glitch Art is, the materials involved, and then dive into hacking the materiality of our digital world.

PROJECT CHALLENGE!

Top 5 projects as selected by the class will be featured on Year of the Glitch!

February 7, 2014

February! So much is happening this month. Why not do sale or something?

OK 25% off everything at GlitchTextiles.com with discount code: 25FEB2014

February 7, 2014

February 7, 2014

Hey, there! I’m teaching series of Glitch Art courses on Skillshare. Sign up for the Basic Databending class today.

Use this link + code TUMBLR50 for a 50% discount on enrollment: http://skl.sh/1f22nqx (limited to the first 50 students)

Glitch Art - Creating Design from Error: Databending Basics will show you how to use text editors and hex editors to make glitch art and then turn a series of glitched images into an animated GIF. We begin with a brief introduction to what Glitch Art is, the materials involved, and then dive into hacking the materiality of our digital world.

PROJECT CHALLENGE!

Top 5 projects as selected by the class will be featured on my blog, Year of the Glitch!

February 5, 2014
The Radical Capacity of Glitch Art: Expression through an Aesthetic Rooted in Error - REDEFINE magazine

February 1, 2014
I think it’s trying to tell me something…

I think it’s trying to tell me something…

January 30, 2014

RGB Channel Shifting

Top Image Source

Bottom Image Source

January 30, 2014

Sorting Governor Chris Christie

on left: sorting by 32bit ARGB color values

on right: sorting RGB channel values separately

Source Image

January 30, 2014

January 30, 2014
More pixel shifting experiments…
Source Image:
Processing Code:
//PixelShifting by Phillip Stearns 2014
PImage sourceImg;
int iteration;

void setup(){
  iteration=0;
  sourceImg = loadImage("shift.jpg");
  size(sourceImg.width, sourceImg.height);
}

void draw(){
  int yoffset = int(random(height));
  int xoffset= int(random(width));
  int randomRows= int(random(height)) - yoffset;
  int randomColumns=int(random(width)) - xoffset;
  
  for(int i = 0 ; i < randomRows ; i++){
  shiftRow(sourceImg, i+yoffset, 15);
  }
  for(int j = 0 ; j < randomColumns ; j++){
  shiftColumn(sourceImg, j+xoffset, 15);
  }
  image(sourceImg, 0, 0);
  sourceImg.save("shifted_" +nf(iteration, 3)+ ".png");
  iteration++;
}

void shiftRow(PImage image, int row, int shift){
  int[] buffer = new int[image.width];
  if (row < 0 || row >= height){
    println("Row value is out of range.");
  } else{
    for(int i = 0 ; i < image.width ; i++){
      buffer[(i+shift) % (image.width)] = image.pixels[row*image.width+i];
    }
    for(int j = 0 ; j < image.width ; j++){  

      sourceImg.pixels[row*image.width+j] = buffer[j];
    }
  }
  sourceImg.updatePixels();
}

void shiftColumn(PImage image, int column, int shift){
  int[] buffer = new int[image.height];
  if(column < 0 || column >= width){
    println("Column value is out of range.");
  }else{ 
    for(int i = 0 ; i < image.height ; i++){
      buffer[(i+shift) % (image.height)] = image.pixels[i*image.width+column];
    }
    for(int j = 0 ; j < image.height ; j++){  
      sourceImg.pixels[j*image.width+column] = buffer[j];
    }
  }
  sourceImg.updatePixels();
}

More pixel shifting experiments…

Source Image:

Processing Code:

//PixelShifting by Phillip Stearns 2014
PImage sourceImg;
int iteration;

void setup(){
  iteration=0;
  sourceImg = loadImage("shift.jpg");
  size(sourceImg.width, sourceImg.height);
}

void draw(){
  int yoffset = int(random(height));
  int xoffset= int(random(width));
  int randomRows= int(random(height)) - yoffset;
  int randomColumns=int(random(width)) - xoffset;
  
  for(int i = 0 ; i < randomRows ; i++){
  shiftRow(sourceImg, i+yoffset, 15);
  }
  for(int j = 0 ; j < randomColumns ; j++){
  shiftColumn(sourceImg, j+xoffset, 15);
  }
  image(sourceImg, 0, 0);
  sourceImg.save("shifted_" +nf(iteration, 3)+ ".png");
  iteration++;
}

void shiftRow(PImage image, int row, int shift){
  int[] buffer = new int[image.width];
  if (row < 0 || row >= height){
    println("Row value is out of range.");
  } else{
    for(int i = 0 ; i < image.width ; i++){
      buffer[(i+shift) % (image.width)] = image.pixels[row*image.width+i];
    }
    for(int j = 0 ; j < image.width ; j++){  

      sourceImg.pixels[row*image.width+j] = buffer[j];
    }
  }
  sourceImg.updatePixels();
}

void shiftColumn(PImage image, int column, int shift){
  int[] buffer = new int[image.height];
  if(column < 0 || column >= width){
    println("Column value is out of range.");
  }else{ 
    for(int i = 0 ; i < image.height ; i++){
      buffer[(i+shift) % (image.height)] = image.pixels[i*image.width+column];
    }
    for(int j = 0 ; j < image.height ; j++){  
      sourceImg.pixels[j*image.width+column] = buffer[j];
    }
  }
  sourceImg.updatePixels();
}

January 29, 2014
Playing with wrap around, pixel shift registers. Each row of pixels has been shifted a random amount.
Source Image

Playing with wrap around, pixel shift registers. Each row of pixels has been shifted a random amount.

Source Image

January 29, 2014
Image Source

Image Source

January 29, 2014

Toying around with averaging and sorting on RGB channels…

Source Image