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.

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 21, 2014
Binary Blizzard
Made with 251 Linear Feedback Shift Registers in Processing

Binary Blizzard

Made with 251 Linear Feedback Shift Registers in Processing

January 21, 2014
Massive Linear Feedback Shift Register Party
made with Processing

Massive Linear Feedback Shift Register Party

made with Processing

January 4, 2014

Weekend Link:

Excellent work spotted in Behance user Geso’s portfolio.

January 1, 2014
Happy New Year!
PS - Year of the Glitch turns 2yrs old today. Thanks for following! Excited to see what 2014 will bring.

Happy New Year!

PS - Year of the Glitch turns 2yrs old today. Thanks for following! Excited to see what 2014 will bring.

December 31, 2013
2013

2013

December 31, 2013
2013

2013

(Source: vimeo.com)

December 31, 2013
2013

2013

(Source: vimeo.com)

December 16, 2013

Created using:

Pure Data GEM

Adobe Premiere and Media Encoder

Avidemux 2.5.4

Quicktime 7 Pro

GIMP

**hint for getting them to synch: allow all images to load, then click on any link, then click “back” (works for most browsers)

November 14, 2013
Coplanar Nations (Z-fighting Studies: Israel &amp; Palestine)
Images of the flags of Israel and Palestine are mapped onto two flattened polygons occupying the same coordinates in a virtual 3D space. The patterns that emerge are a result of the two flags fighting for dominance in the rendering engine in what is called z-fighting.

Coplanar Nations (Z-fighting Studies: Israel & Palestine)

Images of the flags of Israel and Palestine are mapped onto two flattened polygons occupying the same coordinates in a virtual 3D space. The patterns that emerge are a result of the two flags fighting for dominance in the rendering engine in what is called z-fighting.

October 18, 2013
Z-Fighting using Pure Data GEM (Epilepsy Warning)
A video clip containing footage of blue and red neon tubes was mapped to a 3D Surface generated by assigning random X, Y, Z coordinates to a 5x5 matrix of points. Z-fighting was created by collapsing the surface along the z-axis.

Z-Fighting using Pure Data GEM (Epilepsy Warning)

A video clip containing footage of blue and red neon tubes was mapped to a 3D Surface generated by assigning random X, Y, Z coordinates to a 5x5 matrix of points. Z-fighting was created by collapsing the surface along the z-axis.

October 16, 2013
z-fighting in Pure Data using GEM
colors tweaked in GIMP

z-fighting in Pure Data using GEM

colors tweaked in GIMP

October 16, 2013
z-fighting in Pure Data using GEM

z-fighting in Pure Data using GEM

October 16, 2013
z-fighting in PD GEM

z-fighting in PD GEM