+ code=BZ2_bzCompress(&bzip_info,BZ_FINISH);
+ if (code != BZ_OK)
+ status=MagickFalse;
+ length=(size_t) (bzip_info.next_out-(char *) compress_pixels);
+ if (length != 0)
+ {
+ (void) WriteBlobMSBLong(image,(unsigned int) length);
+ (void) WriteBlob(image,length,compress_pixels);
+ }
+ if (code == BZ_STREAM_END)
+ break;
+ }
+ code=BZ2_bzCompressEnd(&bzip_info);
+ if (code != BZ_OK)
+ status=MagickFalse;
+ }
+ break;
+ }
+#endif
+#if defined(MAGICKCORE_LZMA_DELEGATE)
+ case LZMACompression:
+ {
+ if (y == 0)
+ {
+ code=lzma_easy_encoder(&lzma_info,image->quality/10,
+ LZMA_CHECK_SHA256);
+ if (code != LZMA_OK)
+ status=MagickTrue;
+ }
+ lzma_info.next_in=pixels;
+ lzma_info.avail_in=(uInt) (packet_size*image->columns);
+ (void) ExportQuantumPixels(image,(const CacheView *) NULL,
+ quantum_info,quantum_type,pixels,&image->exception);
+ do
+ {
+ lzma_info.next_out=compress_pixels;
+ lzma_info.avail_out=packet_size*image->columns;
+ code=lzma_code(&lzma_info,LZMA_RUN);
+ if (code != LZMA_OK)
+ status=MagickFalse;
+ length=(size_t) (lzma_info.next_out-compress_pixels);
+ if (length != 0)
+ {
+ (void) WriteBlobMSBLong(image,(unsigned int) length);
+ (void) WriteBlob(image,length,compress_pixels);
+ }
+ } while (lzma_info.avail_in != 0);
+ if (y == (ssize_t) (image->rows-1))
+ {
+ for ( ; ; )
+ {
+ lzma_info.next_out=compress_pixels;
+ lzma_info.avail_out=packet_size*image->columns;
+ code=lzma_code(&lzma_info,LZMA_FINISH);
+ if (code != LZMA_OK)
+ status=MagickFalse;
+ length=(size_t) (lzma_info.next_out-compress_pixels);