This is the main code I use when experimenting with raster images (as described in these two posts [1 & 2]). I set the resolution by the size variable. A smaller number than 4 will probably result in a outOfMemory error (depending on the size of the image). Anyway, it is just a routine to iterate through the chosen image and reads the average color value of the square represented by the variable “rectangle” in line 20. Insert any desired function call on line 23 to perform any kind of operation of ones liking. I usually pass these four objects along to the function:

x, y, sampleSize, color

More arguments can be added if required.

mosaics(x, y, sampleSize, color, 1)

The function call above passes some arguments to the function below…

function mosaics(x_coord, y_coord, size, color, strokeWidthModifier){
		var path = new Path([
			new Point(x_coord + 0.5, y_coord) * size,
			new Point(x_coord + 0.5, y_coord + 1) * size ])

			path.strokeColor = color
			path.strokeWidth = size.width / strokeWidthModifier
			path.fillColor = null

…which will produce a result such as this.

But I digress, here is the code:

var getRasters = document.getItems([Raster, PlacedFile], {selected: true})
raster = getRasters.first
if(raster instanceof PlacedFile && !raster.eps) raster = raster.embed(false)

		var size = 5
		var sampleSize = new Size(size, size)
		var rasterWidth = raster.bounds.width
		var rasterHeight = raster.bounds.height
		var offset = raster.bounds.topLeft
		var columns = Math.round(rasterWidth / size)
		var rows = Math.round(rasterHeight / size)
		var draw = true

			for(var y = 0; y < rows; y++){
				for(var x = 0; x < columns; x++){

					var topLeft = offset + new Point(x, y) * sampleSize
					var rectangle = new Rectangle(topLeft, sampleSize)
					var color = raster.getAverageColor(rectangle)