As I mentioned in the comments, this could be a case in which SVG/canvas is a better solution. I am not an expert at them, but creating a simple pattern like the one you want is simple (I used the background solution from this question):
<svg width="300" height="300">
<defs>
<pattern id="img1" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/people/" x="0" y="0" width="200" height="200" />
</pattern>
<pattern id="img2" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/animals/" x="0" y="0" width="200" height="200" />
</pattern>
<pattern id="img3" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/abstract/" x="0" y="0" width="200" height="200" />
</pattern>
<pattern id="img4" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/sports/" x="0" y="0" width="200" height="200"/>
</pattern>
</defs>
<path d="M150,0 225,150 75,150" fill="url(#img1)" />
<path d="M0,300 75,150 150,300" fill="url(#img2)" />
<path d="M75,150 225,150 150,300" fill="url(#img3)" />
<path d="M150,300 300,300 225,150" fill="url(#img4)" />
</svg>
Edit: as requested in the comments below, added some code to show how to manipulate the elements (click on two triangles and their images will swap):
var step = 0;
var $prev;
$("path").on("click", function() {
switch (step) {
// if it's the first step: save the current element for later
case 0:
step = 1;
$prev = $(this);
break;
// if it's the second step: swap images and start again
case 1:
step = 0;
var aux = $prev.attr("fill");
$prev.attr("fill", $(this).attr("fill"));
$(this).attr("fill", aux);
break;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<svg width="300" height="300">
<defs>
<pattern id="img1" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/people/" x="0" y="0" width="200" height="200" />
</pattern>
<pattern id="img2" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/animals/" x="0" y="0" width="200" height="200" />
</pattern>
<pattern id="img3" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/abstract/" x="0" y="0" width="200" height="200" />
</pattern>
<pattern id="img4" width="100%" height="100%">
<image xlink:href="http://lorempixel.com/200/200/sports/" x="0" y="0" width="200" height="200"/>
</pattern>
</defs>
<path id="path1" stroke="black" d="M150,0 225,150 75,150 150,0" fill="url(#img1)" />
<path id="path2" stroke="black" d="M0,300 75,150 150,300 0,300" fill="url(#img2)" />
<path id="path3" stroke="black" d="M75,150 225,150 150,300 75,150" fill="url(#img3)" />
<path id="path4" stroke="black" d="M150,300 300,300 225,150 150,300" fill="url(#img4)" />
</svg>
You can also see it on this JSFiddle: http://jsfiddle.net/4x7sh6bj/1/