diff --git a/src/libdraw/cloadimage.c b/src/libdraw/cloadimage.c
new file mode 100644
index 0000000..eb30466
--- /dev/null
+++ b/src/libdraw/cloadimage.c
@@ -0,0 +1,49 @@
+#include <u.h>
+#include <libc.h>
+#include <draw.h>
+
+int
+cloadimage(Image *i, Rectangle r, uchar *data, int ndata)
+{
+	int m, nb, miny, maxy, ncblock;
+	uchar *a;
+
+	if(!rectinrect(r, i->r)){
+		werrstr("cloadimage: bad rectangle");
+		return -1;
+	}
+
+	miny = r.min.y;
+	m = 0;
+	ncblock = _compblocksize(r, i->depth);
+	while(miny != r.max.y){
+		maxy = atoi((char*)data+0*12);
+		nb = atoi((char*)data+1*12);
+		if(maxy<=miny || r.max.y<maxy){
+			werrstr("creadimage: bad maxy %d", maxy);
+			return -1;
+		}
+		data += 2*12;
+		ndata -= 2*12;
+		m += 2*12;
+		if(nb<=0 || ncblock<nb || nb>ndata){
+			werrstr("creadimage: bad count %d", nb);
+			return -1;
+		}
+		a = bufimage(i->display, 21+nb);
+		if(a == nil)
+			return -1;
+		a[0] = 'Y';
+		BPLONG(a+1, i->id);
+		BPLONG(a+5, r.min.x);
+		BPLONG(a+9, miny);
+		BPLONG(a+13, r.max.x);
+		BPLONG(a+17, maxy);
+		memmove(a+21, data, nb);
+		miny = maxy;
+		data += nb;
+		ndata += nb;
+		m += nb;
+	}
+	return m;
+}
