Index: encode.c
===================================================================
--- encode.c	(revision 1)
+++ encode.c	(working copy)
@@ -442,9 +442,10 @@
     char* rawmode;
     int optimize = 0;
     char* dictionary = NULL;
-    int dictionary_size = 0;
-    if (!PyArg_ParseTuple(args, "ss|is#", &mode, &rawmode, &optimize,
-			  &dictionary, &dictionary_size))
+    int dictionary_size = 0;
+    int no_filter = 0;
+    if (!PyArg_ParseTuple(args, "ss|is#i", &mode, &rawmode, &optimize,
+			  &dictionary, &dictionary_size, &no_filter))
 	return NULL;
 
     encoder = PyImaging_EncoderNew(sizeof(ZIPSTATE));
@@ -456,7 +457,7 @@
 
     encoder->encode = ImagingZipEncode;
 
-    if (rawmode[0] == 'P')
+    if (rawmode[0] == 'P' || no_filter) 
 	/* disable filtering */
 	((ZIPSTATE*)encoder->state.context)->mode = ZIP_PNG_PALETTE;
 
Index: PIL/PngImagePlugin.py
===================================================================
--- PIL/PngImagePlugin.py	(revision 1)
+++ PIL/PngImagePlugin.py	(working copy)
@@ -455,7 +455,7 @@
     else:
         dictionary = ""
 
-    im.encoderconfig = (im.encoderinfo.has_key("optimize"), dictionary)
+    im.encoderconfig = (im.encoderinfo.has_key("optimize"), dictionary, im.encoderinfo.has_key("no_filter"))
 
     # get the corresponding PNG mode
     try:
