Released on November 29th, 2020.
- Fixed memory allocation & deallocation bugs with PyPy3, and various memory leaks identified during regression testing. [
510
]- [TEST] Added Python 3.9 into Github regression tests. [
513
by Thijs Triemstra]
Released on November 21st, 2020.
- Fixed MagickFloatType mapping for s390x architecture. [
504
&505
]- Fixed image order when calling
wand.sequence.Sequence.__setitem__()
method. [506
]- Fixed
Image.gaussian_blur() <wand.image.BaseImage.gaussian_blur>
method withchannel
parameter. [507
]- Added
Image.color_threshold() <wand.image.BaseImage.color_threshold>
method.- Added
Image.convex_hull() <wand.image.BaseImage.convex_hull>
method. Requires ImageMagick-7.0.10 or above.- Added
Image.kmeans() <wand.image.BaseImage.kmeans>
method. Only available with ImageMagick-7.0.10-37 or later.- Added
Image.minimum_bounding_box() <wand.image.BaseImage.minimum_bounding_box>
method. Requires ImageMagick-7.0.10 or above;- Added
Image.white_balance() <wand.image.BaseImage.white_balance>
method. Only available with ImageMagick-7.0.10-37 or later.- Added
percent_background
&background_color
parameters toImage.trim() <wand.image.BaseImage.trim>
method.- Added the following arguments to
Image.connected_components() <wand.image.BaseImage.connected_components>
:
angle_threshold
background_id
circularity_threshold
diameter_threshold
eccentricity_threshold
keep_colors
keep_top
major_axis_threshold
minor_axis_threshold
perimeter_threshold
remove_colors
- Added
'inverse_log'
operator toImage.evaluate() <wand.image.BaseImage.evaluate>
method.- Added
'rigidaffine'
operator toImage.distort() <wand.image.BaseImage.distort>
method. Requires ImageMagick-7.0.10 or above.- Added
PAPERSIZE_MAP <wand.image.PAPERSIZE_MAP>
dict as a convenience lookup table.- Added support for setting
Image.page <wand.image.BaseImage.page>
attribute with papersizes defined in~wand.image.PAPERSIZE_MAP
.- [DOC] Created
Threshold <./guide/threshold>
guide.- [DOC] Created
Quantize <./guide/quantize>
guide.
Released on September 14th, 2020.
- Fixed buffer overflow bug in
Image.connected_components() <wand.image.BaseImage.connected_components>
method. [496
]- Added
Image.data_url() <wand.image.Image.data_url>
method. [489
]- Added
Image.sampling_factors <wand.image.BaseImage.sampling_factors>
property. [491
]- Added
Image.encipher() <wand.image.BaseImage.encipher>
&Image.decipher() <wand.image.BaseImage.decipher>
methods.- Argument
fuzz
forImage.transparent_color() <wand.image.BaseImage.transparent_color>
now acceptsnumbers.Real
numbers.- Uniformed additional pre-read parameters between
Image.__init__()
&Image.read()
.
Released on July 6th, 2020.
- Added aspect cropping support for
Image.transform() <wand.image.BaseImage.transform>
method.- Added iterator methods to directly navigate the internal image-stack.
Image.iterator_first() <wand.image.BaseImage.iterator_first>
Image.iterator_get() <wand.image.BaseImage.iterator_get>
Image.iterator_last() <wand.image.BaseImage.iterator_last>
Image.iterator_length() <wand.image.BaseImage.iterator_length>
Image.iterator_next() <wand.image.BaseImage.iterator_next>
Image.iterator_previous() <wand.image.BaseImage.iterator_previous>
Image.iterator_reset() <wand.image.BaseImage.iterator_reset>
Image.iterator_set() <wand.image.BaseImage.iterator_set>
- Added
gray
&cmyk
support for Numpy's array interface.- Fixed
~wand.display.display
on Windows & MacOS when previewing MIFF & XC formats.- Fixed memory leak in
Image.transform() <wand.image.BaseImage.transform>
for ImageMagick-6.- Fixed animation preservation with
Image.transform() <wand.image.BaseImage.transform>
method. [251
]- Fixed
Image.interlace_scheme <wand.image.BaseImage.interlace_scheme>
property. [488
]- [DOC] Make the documentation reproducible. [
484
by Chris Lamb]
Released on May 15th, 2020.
- Fixed RuntimeError on deallocation when
allocation_map
changes. [482
by Louis Sautier]
Released on May 14th, 2020.
- Updated
numpy
array interface methods to accept / generateshape
data values asrows
,columns
, andchannels
. This change should match other python-image numpy integrations. [447
]- Added
adjoin=
argument toImage.save() <wand.image.Image.save>
method.- Added
reset_coords=
argument toImage.trim() <wand.image.BaseImage.trim>
method. [472
]- Added support for
atexit
's shutdown routine. [248
&361
]- Added Python 2 classifiers to
MANIFEST.in
. [462
by Thijs Triemstra]- Added both test-cases and documentation to source distribution packages. [
7
,479
,480
]- Removed
README.rst
fromsetup.py
. [460
]- Rewrote memory allocation manager. [
300
&312
]- Fixed segfault on macOS when invoking resource limits without calling :c
MagickWandGenesis()
.- Fixed
grayscalealpha
spelling. [463
]- Fixed
Image.deskew() <wand.image.BaseImage.deskew>
threshold argument. [467
]- Fixed
Image.alpha_channel <wand.image.BaseImage.alpha_channel>
property to apply changes to all images in the stack. [468
]- Fixed
Image.trim() <wand.image.BaseImage.trim>
paging offsets affected by 1x1 border. [475
]- [TEST] Updated Travis CI environment to Ubuntu 18.04.04 LTS (Bionic)
- [TEST] Deprecated display fixtures.
Released on February 10th, 2020.
- Fixed
dither
parameter inImage.quantize() <wand.image.BaseImage.quantize>
method for ImageMagick-7.- Added
Image.combine() <wand.image.Image.combine>
method. [Thanks Fred!]- Check
__fspath__
attribute forfilename
parameter when callingImage.save() <wand.image.Image.save>
. [452
]- Fixed typo in
ProfileDict <wand.image.ProfileDict>
documentation. [450
by Thijs Triemstra]- Fixed typo in
Resource.c_is_resource <wand.resource.Resource.c_is_resource>
documentation. [448
]- Updated broken sentence in
Image.thumbnail() <wand.image.BaseImage.thumbnail>
method. [446
]- Check for
linux_distribution() <platform.linux_distribution>
as method was removed in Python 3.8. [456
]- Added
Image.delay <wand.image.BaseImage.delay>
property. Previously only available with~wand.sequence.SingleImage
class.
Released on December 5th, 2019.
- Check
WAND_MAGICK_LIBRARY_SUFFIX
for additional library suffixes. [436
]- Fixed :c
MagickCompareImagesLayers
loading for ImageMagick-6 [439
]- Fixed incorrect color values for first 5 pixels when exporting to
numpy.array
[442
]- Updated example in
Image.annotate() <wand.image.BaseImage.annotate>
docstring. [441
by alexgv]- Fixed
Image.resolution <wand.image.BaseImage.resolution>
property to return a tuple of float values. [444
]- Improved pycache performance by explicitly defining all ImageMagick warnings & errors in
wand.exceptions
. Previously all ImageMagick exceptions were generated dynamically during run-time.
Released on September 3rd, 2019.
- Added
Image.color_decision_list() <wand.image.BaseImage.color_decision_list>
method.- Added
Image.contrast() <wand.image.BaseImage.contrast>
method.- Added
Image.local_contrast() <wand.image.BaseImage.local_contrast>
method.- Added
Image.ordered_dither() <wand.image.BaseImage.ordered_dither>
method.- Added
Image.random_threshold() <wand.image.BaseImage.random_threshold>
method.- Added
Image.read_mask() <wand.image.BaseImage.read_mask>
method. [433
]- Added
Image.scale() <wand.image.BaseImage.scale>
method.- Added
Image.sepia_tone() <wand.image.BaseImage.sepia_tone>
method.- Added
Image.swirl() <wand.image.BaseImage.swirl>
method.- Added
Image.write_mask() <wand.image.BaseImage.write_mask>
method. [433
]- Converted positional to key-word arguments to allow default values & allow more consistent behavior with CLI operations for the following methods:
Image.blur() <wand.image.BaseImage.blur>
Image.gaussian_blur() <wand.image.BaseImage.gaussian_blur>
Image.selective_blur() <wand.image.BaseImage.selective_blur>
Image.spread() <wand.image.BaseImage.spread>
Image.unsharp_mask() <wand.image.BaseImage.unsharp_mask>
- Restored
320
fix. [Reported by435
]- Added
colorspace
&units
argument to~wand.image.Image
init. This is useful for defining sRGB ahead of reading CMYKA PDF documents.
Released on August 2nd, 2019.
- Fixed invalid escape sequence warnings [
428
]- Fixed error on Drawing exception handling. [
427
]- Fixed undefined behavior when working with image frames in ImageMagick-7. [
431
]- Added
Image.annotate() <wand.image.BaseImage.annotate>
method. [418
]- Added
Image.level_colors() <wand.image.BaseImage.level_colors>
method.- Added
Image.levelize_colors() <wand.image.BaseImage.levelize_colors>
method.- Added
Image.parse_meta_geometry() <wand.image.BaseImage.parse_meta_geometry>
method.- Added
Image.percent_escape() <wand.image.BaseImage.percent_escape>
helper method. [421
]- Added
Image.ping() <wand.image.Image.ping>
class method. [425
]- Added
mean_color
,keep
, &remove
parameters inImage.connected_components() <wand.image.BaseImage.connected_components>
method.
Released on July 8th, 2019.
- Rewrote
Image.contrast_stretch() <wand.image.BaseImage.contrast_stretch>
method to follow modern CLI behavior.- Added
Image.chop() <wand.image.BaseImage.chop>
method.- Added
Image.clahe() <wand.image.BaseImage.clahe>
method.- Added
Image.features() <wand.image.BaseImage.features>
method.- Added
Image.forward_fourier_transform() <wand.image.BaseImage.forward_fourier_transform>
method.- Added
Image.inverse_fourier_transform() <wand.image.BaseImage.inverse_fourier_transform>
method.- Added
Image.magnify() <wand.image.BaseImage.magnify>
method.- Added
channel
parameter support for the following methods.
Image.adaptive_blur() <wand.image.BaseImage.adaptive_blur>
Image.adaptive_sharpen() <wand.image.BaseImage.adaptive_sharpen>
Image.blur() <wand.image.BaseImage.blur>
Image.brightness_contrast() <wand.image.BaseImage.brightness_contrast>
Image.clamp() <wand.image.BaseImage.clamp>
Image.clut() <wand.image.BaseImage.clut>
Image.equalize() <wand.image.BaseImage.equalize>
Image.gaussian_blur() <wand.image.BaseImage.gaussian_blur>
Image.hald_clut() <wand.image.BaseImage.hald_clut>
Image.noise() <wand.image.BaseImage.noise>
Image.morphology() <wand.image.BaseImage.morphology>
Image.opaque_paint() <wand.image.BaseImage.opaque_paint>
Image.selective_blur() <wand.image.BaseImage.selective_blur>
Image.sharpen() <wand.image.BaseImage.sharpen>
Image.sigmoidal_contrast() <wand.image.BaseImage.sigmoidal_contrast>
Image.solarize() <wand.image.BaseImage.solarize>
Image.statistic() <wand.image.BaseImage.statistic>
Image.unsharp_mask() <wand.image.BaseImage.unsharp_mask>
- Added support for new methods introduced with ImageMagick 7.0.8-41. Upgrade to the latest ImageMagick version to take advantage of the following features.
Image.auto_threshold() <wand.image.BaseImage.auto_threshold>
Image.canny() <wand.image.BaseImage.canny>
Image.complex() <wand.image.BaseImage.complex>
Image.connected_components() <wand.image.BaseImage.connected_components>
Image.hough_lines() <wand.image.BaseImage.hough_lines>
Image.kuwahara() <wand.image.BaseImage.kuwahara>
Image.levelize() <wand.image.BaseImage.levelize>
Image.mean_shift() <wand.image.BaseImage.mean_shift>
Image.polynomial() <wand.image.BaseImage.polynomial>
Image.range_threshold() <wand.image.BaseImage.range_threshold>
Image.seed <wand.image.BaseImage.seed>
Image.wavelet_denoise() <wand.image.BaseImage.wavelet_denoise>
Released on May 25th, 2019.
- Rewrote
~wand.api.libc
library loader. [409
]- Respect
background
parameter inImage.__init__() <wand.image.Image.__init__>
constructor. [410
]- Fixed
Drawing.get_font_metrics() <wand.drawing.Drawing.get_font_metrics>
not raising internal ImageMagick exception on rendering error. [411
]- Fixed deleting image artifact value.
- Fixed offset memory calculation in
Image.export_pixels() <wand.image.BaseImage.export_pixels>
&Image.import_pixels() <wand.image.BaseImage.import_pixels>
methods. [413
]- Added
Image.auto_gamma() <wand.image.BaseImage.auto_gamma>
method.- Added
Image.auto_level() <wand.image.BaseImage.auto_level>
method.- Added
Image.border_color <wand.image.BaseImage.border_color>
property.- Added
Image.brightness_contrast() <wand.image.BaseImage.brightness_contrast>
method.- Added
Image.mode() <wand.image.BaseImage.mode>
method.- Added
Image.motion_blur() <wand.image.BaseImage.motion_blur>
method.- Added
Image.oil_paint() <wand.image.BaseImage.oil_paint>
method.- Added
Image.opaque_paint() <wand.image.BaseImage.opaque_paint>
method.- Added
Image.polaroid() <wand.image.BaseImage.polaroid>
method.- Added
Image.rendering_intent <wand.image.BaseImage.rendering_intent>
property.- Added
Image.rotational_blur() <wand.image.BaseImage.rotational_blur>
method.- Added
Image.scene <wand.image.BaseImage.scene>
property.- Added
Image.shear() <wand.image.BaseImage.shear>
method.- Added
Image.sigmoidal_contrast() <wand.image.BaseImage.sigmoidal_contrast>
method.- Added
Image.similarity() <wand.image.BaseImage.similarity>
method.- Added
Image.stegano() <wand.image.BaseImage.stegano>
method.- Added
Image.stereogram() <wand.image.Image.stereogram>
class method.- Added
Image.texture() <wand.image.BaseImage.texture>
method.- Added
Image.thumbnail() <wand.image.BaseImage.thumbnail>
method. [357
by yoch]- Added
Image.ticks_per_second <wand.image.BaseImage.ticks_per_second>
property.
Released on April 20, 2019.
- Fixed alpha channel set to "on" & "off" values for ImageMagick-7. [
404
]- Updated
Image.composite <wand.image.BaseImage.composite>
&Image.composite_channel <wand.image.BaseImage.composite_channel>
to include optional arguments for composite methods that require extra controls.- Updated
Image.composite <wand.image.BaseImage.composite>
&Image.composite_channel <wand.image.BaseImage.composite_channel>
to include optional gravity argument.
- Support for numpy arrays. [
65
]
- Added
Image.from_array <wand.image.Image.from_array>
class method.
- Support color map / palette manipulation. [
403
]
- Added
Image.colors <wand.image.BaseImage.colors>
property.- Added
Image.color_map() <wand.image.BaseImage.color_map>
method.- Added
Image.cycle_color_map() <wand.image.BaseImage.cycle_color_map>
method.- Support for
highlight
&lowlight
has been added toImage.compare() <wand.image.BaseImage.compare>
method.- Support for PEP-519 for objects implementing
__fspath__
, in~wand.compat.encode_filename
.- Added
Image.adaptive_blur() <wand.image.BaseImage.adaptive_blur>
method.- Added
Image.adaptive_resize() <wand.image.BaseImage.adaptive_resize>
method.- Added
Image.adaptive_sharpen() <wand.image.BaseImage.adaptive_sharpen>
method.- Added
Image.adaptive_threshold() <wand.image.BaseImage.adaptive_threshold>
method.- Added
Image.black_threshold() <wand.image.BaseImage.black_threshold>
method.- Added
Image.blue_shift() <wand.image.BaseImage.blue_shift>
method.- Added
Image.charcoal() <wand.image.BaseImage.charcoal>
method.- Added
Image.color_matrix() <wand.image.BaseImage.color_matrix>
method.- Added
Image.colorize() <wand.image.BaseImage.colorize>
method.- Added
Image.fuzz <wand.image.BaseImage.fuzz>
property.- Added
Image.kurtosis <wand.image.BaseImage.kurtosis>
property.- Added
Image.kurtosis_channel() <wand.image.BaseImage.kurtosis_channel>
method- Added
Image.maxima <wand.image.BaseImage.maxima>
property.- Added
Image.mean <wand.image.BaseImage.mean>
property.- Added
Image.mean_channel() <wand.image.BaseImage.mean_channel>
method- Added
Image.minima <wand.image.BaseImage.minima>
property.- Added
Image.noise() <wand.image.BaseImage.noise>
method.- Added
Image.range_channel() <wand.image.BaseImage.range_channel>
method- Added
Image.remap() <wand.image.BaseImage.remap>
method.- Added
Image.selective_blur() <wand.image.BaseImage.selective_blur>
method.- Added
Image.skewness <wand.image.BaseImage.skewness>
property.- Added
Image.sketch() <wand.image.BaseImage.sketch>
method.- Added
Image.smush() <wand.image.BaseImage.smush>
method.- Added
Image.sparse_color() <wand.image.BaseImage.sparse_color>
method.- Added
Image.splice() <wand.image.BaseImage.splice>
method.- Added
Image.spread() <wand.image.BaseImage.spread>
method.- Added
Image.standard_deviation <wand.image.BaseImage.standard_deviation>
property.- Added
Image.statistic() <wand.image.BaseImage.statistic>
method.- Added
Image.tint() <wand.image.BaseImage.tint>
method.
Special thanks to Fred Weinhaus for helping test this release.
Released on March 24, 2019.
- Import
collections.abc
explicitly. [398
by Stefan Naumann]- Fixed memory leak in
~wand.image.HistogramDict
. [397
]- Fixed compression & compression quality bug. [
202
&278
]Image.read() <wand.image.Image.read>
will raise~wand.exceptions.WandRuntimeError
if :cMagickReadImage
returns :cMagickFalse
, but does not emit exception. [319
]- Added
Image.implode() <wand.image.BaseImage.implode>
method.- Added
Image.vignette() <wand.image.BaseImage.vignette>
method.- Added
Image.wave() <wand.image.BaseImage.wave>
method.- Added
Image.white_threshold() <wand.image.BaseImage.white_threshold>
method.- Added
Image.blue_primary <wand.image.BaseImage.blue_primary>
property.- Added
Image.green_primary <wand.image.BaseImage.green_primary>
property.- Added
Image.interlace_scheme <wand.image.BaseImage.interlace_scheme>
property.- Added
Image.interpolate_method <wand.image.BaseImage.interpolate_method>
property.- Added
Image.red_primary <wand.image.BaseImage.red_primary>
property.- Added
Image.white_point <wand.image.BaseImage.white_point>
property.
Released on February 15, 2019.
- Added set pixel color via Image[x, y] = Color('...'). [
105
] - Added
limits <wand.resource.ResourceLimits>
helper dictionary to allows getting / setting ImageMagick's resource-limit policies. [97
] - Fixed segmentation violation for win32 & ImageMagick-7. [
389
] - Fixed AssertError by moving
~wand.sequence.SingleImage
sync behavior fromdestroy
to context__exit__
. [388
] - Fixed memory leak in
~wand.drawing.Drawing.get_font_metrics
. [390
] - Added property setters for
~wand.color.Color
attributes. - Added
~wand.color.Color.cyan
,~wand.color.Color.magenta
,~wand.color.Color.yellow
, &~wand.color.Color.black
properties for CMYK~wand.color.Color
instances. ~wand.color.Color
instance can be created from HSL values with~wand.color.Color.from_hsl()
class method.- Added
Image.compose <wand.image.BaseImage.compose>
property for identifying layer visibility. - Added
Image.profiles <wand.image.ProfileDict>
dictionary attribute. [249
] - Moved
collections.abc
towand.compat.abc
for Python-3.8. [394
by Tero Vuotila] - Update
wand.display
to use Python3 compatibleprint()
function. [395
by Tero Vuotila]
Released on January 1, 2019.
- Support for ImageMagick-7.
- Improved support for 32-bit systems.
- Improved support for non-Q16 libraries.
- Removed README.rst from setup.py's data_files. [
336
] - Improved EXIF:ORIENTATION handling. [
364
by M. Skrzypek] - Tolerate failures while accessing wand.api. [
220
by Utkarsh Upadhyay] - Added support for Image Artifacts through
Image.artifacts <wand.image.Image.artifacts>
. [369
] - Added optional stroke color/width parameters for
Font <wand.font.Font>
. Image layers support (
22
)- Added
Image.coalesce() <wand.image.BaseImage.coalesce>
method. - Added
Image.deconstruct <wand.image.BaseImage.deconstruct>
method. - Added
Image.dispose <wand.image.BaseImage.dispose>
property. - Added
Image.optimize_layers() <wand.image.BaseImage.optimize_layers>
method. - Added
Image.optimize_transparency() <wand.image.BaseImage.optimize_transparency>
method.
- Added
- Implemented
__array_interface__
for NumPy [65
] Migrated the following methods & attributes from
Image <wand.image.Image>
toBaseImage <wand.image.BaseImage>
for a more uniformed code-base.Image.compression <wand.image.BaseImage.compression>
Image.format <wand.image.BaseImage.format>
Image.auto_orient() <wand.image.BaseImage.auto_orient>
Image.border() <wand.image.BaseImage.border>
Image.contrast_stretch() <wand.image.BaseImage.contrast_stretch>
Image.gamma() <wand.image.BaseImage.gamma>
Image.level() <wand.image.BaseImage.level>
Image.linear_stretch() <wand.image.BaseImage.linear_stretch>
Image.normalize() <wand.image.BaseImage.normalize>
Image.strip() <wand.image.BaseImage.strip>
Image.transpose() <wand.image.BaseImage.transpose>
Image.transverse() <wand.image.BaseImage.transverse>
Image.trim() <wand.image.BaseImage.trim>
- Added
Image.clut() <wand.image.BaseImage.clut>
method. - Added
Image.concat() <wand.image.BaseImage.concat>
method. [177
] - Added
Image.deskew() <wand.image.BaseImage.deskew>
method. - Added
Image.despeckle() <wand.image.BaseImage.despeckle>
method. - Added
Image.edge() <wand.image.BaseImage.edge>
method. - Added
Image.emboss() <wand.image.BaseImage.emboss>
method. [196
] - Added
Image.enhance() <wand.image.BaseImage.enhance>
method. [132
] - Added
Image.export_pixels() <wand.image.BaseImage.export_pixels>
method. - Added
Image.import_pixels() <wand.image.BaseImage.import_pixels>
method. - Added
Image.morphology() <wand.image.BaseImage.morphology>
method. [132
] - Added
Image.posterize() <wand.image.BaseImage.posterize>
method. - Added
Image.shade() <wand.image.BaseImage.shade>
method. - Added
Image.shadow() <wand.image.BaseImage.shadow>
method. - Added
Image.sharpen() <wand.image.BaseImage.sharpen>
method. [132
] - Added
Image.shave() <wand.image.BaseImage.shave>
method. - Added
Image.unique_colors() <wand.image.BaseImage.unique_colors>
method. - Method
Drawing.draw() <wand.drawing.Drawing.draw>
now acceptsBaseImage <wand.image.BaseImage>
for folks extended classes. - Added
Image.loop <wand.image.BaseImage.loop>
property. [227
] - Fixed
SingleImage.delay <wand.sequence.SingleImage.delay>
property. [153
] - Attribute
Image.font_antialias <wand.image.BaseImage.font_antialias>
has been deprecated in favor ofImage.antialias <wand.image.BaseImage.antialias>
. [218
] - Fixed ordering of
COMPRESSION_TYPES <wand.image.COMPRESSION_TYPES>
based on ImageMagick version. [309
] - Fixed drawing on
SingleImage <wand.sequence.SingleImage>
. [289
] - Fixed wrapping issue for larger offsets when using gravity kwarg in
Image.crop() <wand.image.BaseImage.crop>
method. [367
]
Released on November 12, 2018.
- Improve library searching when
MAGICK_HOME
environment variable is set. [320
by Chase Anderson] - Fixed misleading TypeError: object of type 'NoneType' has no len() during destroy routines. [
346
by Carey Metcalfe] - Added
Image.blur() <wand.image.BaseImage.blur>
method (:cMagickBlurImage()
). [311
by Alexander Karpinsky] - Added
Image.extent() <wand.image.BaseImage.extent>
method (:cMagickExtentImage()
). [233
by Jae-Myoung Yu] - Added
Image.resample() <wand.image.BaseImage.resample>
method (:cMagickResampleImage()
). [244
by Zio Tibia]
Released on October 22, 2016.
- Added
~wand.exceptions.BaseError
,~wand.exceptions.BaseWarning
, and~wand.exceptions.BaseFatalError
, base classes for domains. [292
] - Fixed
TypeError
during parsing version caused by format change of ImageMagick version string (introduced by 6.9.6.2). [310
, Debian bug report #841548] - Properly fixed again memory-leak when accessing images constructed in
Image.sequence[] <wand.sequence.Sequence>
. It had still leaked memory in the case an image is not closed usingwith
but manualwand.resource.Resource.destroy()
/wand.image.Image.close()
method call. [237
]
Released on June 1, 2016.
- Fixed
repr()
for empty~.wand.image.Image
objects. [265
] - Added
Image.compare() <wand.image.BaseImage.compare>
method (:cMagickCompareImages()
). [238
,268
by Gyusun Yeom] - Added
Image.page <wand.image.BaseImage.page>
and related properties for virtual canvas handling. [284
by Dan Harrison] - Added
Image.merge_layers() <wand.image.BaseImage.merge_layers>
method (:cMagickMergeImageLayers()
). [281
by Dan Harrison] - Fixed
OSError
during importlibc.dylib
due to El Capitan's SIP protection. [275
by Ramesh Dharan]
Released on November 30, 2015.
- Fixed
ImportError
on MSYS2. [257
by Eon Jeong] - Added
Image.quantize() <wand.image.BaseImage.quantize>
method (:cMagickQuantizeImage()
). [152
by Kang Hyojun,262
by Jeong YunWon] - Added
Image.transform_colorspace() <wand.image.BaseImage.transform_colorspace>
quantize (:cMagickTransformImageColorspace()
). [152
by Adrian Jung,262
by Jeong YunWon] - Now ImageMagick DLL can be loaded on Windows even if its location is stored in the registry. [
261
by Roeland Schoukens] - Added
depth
parameter to~.wand.image.Image
constructor. Thedepth
,width
andheight
parameters can be used with thefilename
,file
andblob
parameters to load raw pixel data. [261
by Roeland Schoukens]
Released on August 3, 2015.
- Added
Image.auto_orient() <wand.image.BaseImage.auto_orient>
that fixes orientation by checking EXIF tags. - Added
Image.transverse() <wand.image.BaseImage.transverse>
method (:cMagickTransverseImage()
). - Added
Image.transpose() <wand.image.BaseImage.transpose>
method (:cMagickTransposeImage()
). - Added
Image.evaluate() <wand.image.BaseImage.evaluate>
method. - Added
Image.frame() <wand.image.BaseImage.frame>
method. - Added
Image.function() <wand.image.BaseImage.function>
method. - Added
Image.fx() <wand.image.BaseImage.fx>
expression method. - Added
gravity
options inImage.crop() <wand.image.BaseImage.crop>
method. [222
by Eric McConville] - Added
Image.matte_color <wand.image.BaseImage.matte_color>
property. - Added
Image.virtual_pixel <wand.image.BaseImage.virtual_pixel>
property. - Added
Image.distort() <wand.image.BaseImage.distort>
method. - Added
Image.contrast_stretch() <wand.image.BaseImage.contrast_stretch>
method. - Added
Image.gamma() <wand.image.BaseImage.gamma>
method. - Added
Image.linear_stretch() <wand.image.BaseImage.linear_stretch>
method. - Additional support for
Image.alpha_channel <wand.image.BaseImage.alpha_channel>
. - Additional query functions have been added to
wand.version
API. [120
]- Added
configure_options() <wand.version.configure_options>
function. - Added
fonts() <wand.version.fonts>
function. - Added
formats() <wand.version.formats>
function.
- Added
- Additional IPython support. [
117
]- Render RGB
Color <wand.color.Color>
preview. - Display each frame in image
Sequence <wand.sequence.Sequence>
.
- Render RGB
- Fixed memory-leak when accessing images constructed in
Image.sequence[] <wand.sequence.Sequence>
. [237
by Eric McConville] - Fixed Windows memory-deallocate errors on
wand.drawing
API. [226
by Eric McConville] - Fixed
ImportError
on FreeBSD. [252
by Pellaeon Lin]
Released on February 20, 2015.
whatsnew/0.4
This guide introduces what's new in Wand 0.4.
- Complete
wand.drawing
API. The whole work was done by Eric McConville. Huge thanks for his effort! [194
by Eric McConville]- Added
Drawing.arc() <wand.drawing.Drawing.arc>
method (draw-arc
). - Added
Drawing.bezier() <wand.drawing.Drawing.bezier>
method (draw-bezier
). - Added
Drawing.circle() <wand.drawing.Drawing.circle>
method (draw-circle
). draw-color-and-matte
- Added
wand.drawing.PAINT_METHOD_TYPES
constant. - Added
Drawing.color() <wand.drawing.Drawing.color>
method. - Added
Drawing matte() <wand.drawing.Drawing.matte>
method.
- Added
- Added
Drawing.composite() <wand.drawing.Drawing.composite>
method (draw-composite
). - Added
Drawing.ellipse() <wand.drawing.Drawing.ellipse>
method (draw-ellipse
). draw-paths
- Added
~wand.drawing.Drawing.path_start()
method. - Added
~wand.drawing.Drawing.path_finish()
method. - Added
~wand.drawing.Drawing.path_close()
method. - Added
~wand.drawing.Drawing.path_curve()
method. - Added
~wand.drawing.Drawing.path_curve_to_quadratic_bezier()
method. - Added
~wand.drawing.Drawing.path_elliptic_arc()
method. - Added
~wand.drawing.Drawing.path_horizontal_line()
method. - Added
~wand.drawing.Drawing.path_line()
method. - Added
~wand.drawing.Drawing.path_move()
method. - Added
~wand.drawing.Drawing.path_vertical_line()
method.
- Added
- Added
Drawing.point() <wand.drawing.Drawing.point>
method (draw-point
). - Added
Drawing.polygon() <wand.drawing.Drawing.polygon>
method (draw-polygon
). - Added
Drawing.polyline() <wand.drawing.Drawing.polyline>
method (draw-polyline
). draw-push-pop
- Added
~wand.drawing.Drawing.push()
method. - Added
~wand.drawing.Drawing.push_clip_path()
method. - Added
~wand.drawing.Drawing.push_defs()
method. - Added
~wand.drawing.Drawing.push_pattern()
method. - Added
~wand.drawing.Drawing.clip_path
property. - Added
~wand.drawing.Drawing.set_fill_pattern_url()
method. - Added
~wand.drawing.Drawing.set_stroke_pattern_url()
method. - Added
~wand.drawing.Drawing.pop()
method.
- Added
- Added
Drawing.rectangle() <wand.drawing.Drawing.rectangle>
method (draw-rectangles
). - Added
~wand.drawing.Drawing.stroke_dash_array
property. - Added
~wand.drawing.Drawing.stroke_dash_offset
property. - Added
~wand.drawing.Drawing.stroke_line_cap
property. - Added
~wand.drawing.Drawing.stroke_line_join
property. - Added
~wand.drawing.Drawing.stroke_miter_limit
property. - Added
~wand.drawing.Drawing.stroke_opacity
property. - Added
~wand.drawing.Drawing.stroke_width
property. - Added
~wand.drawing.Drawing.fill_opacity
property. - Added
~wand.drawing.Drawing.fill_rule
property.
- Added
- Error message of
~wand.exceptions.MissingDelegateError
raised byImage.liquid_rescale() <wand.image.BaseImage.liquid_rescale>
became nicer.
Released on December 20, 2014.
- Added
'pdf:use-cropbox'
option toImage.options <wand.image.BaseImage.options>
dictionary (and~wand.image.OPTIONS
constant). [185
by Christoph Neuroth] - Fixed a bug that exception message was
bytes
instead ofstr
on Python 3. - The
size
parameter of~wand.font.Font
class becomes optional. Its default value is 0, which means autosized. [191
by Cha, Hojeong] - Fixed a bug that
Image.read() <wand.image.Image.read>
had tried using :cMagickReadImageFile()
even when the given file object has nomode
attribute. [205
by Stephen J. Fuhry]
Released on August 3, 2014.
- Fixed a bug that transparent background becomes filled with white when SVG is converted to other bitmap image format like PNG. [
184
] - Added
Image.negate() <wand.image.BaseImage.negate>
method. [174
by Park Joon-Kyu] - Fixed a segmentation fault on
Image.modulate() <wand.image.BaseImage.modulate>
method. [173
by Ted Fung,158
] - Added suggestion to install freetype also if Homebrew is used. [
141
] - Now
image/x-gif
also is determined asanimation
. [181
by Juan-Pablo Scaletti]
Released on March 25, 2014.
- A hotfix of debug prints made at 0.3.6.
Released on March 23, 2014.
- Added
Drawing.rectangle() <wand.drawing.Drawing.rectangle>
method.Now you can draw rectangles. <draw-rectangles>
[159
] - Added
Image.compression <wand.image.BaseImage.compression>
property. [171
] - Added
contextlib.nested()
function towand.compat
module. - Fixed
UnicodeEncodeError
whenDrawing.text() <wand.drawing.Drawing.text>
method gives Unicodetext
argument in Python 2. [163
] - Now it now allows to use Wand when Python is invoked with the
-OO
flag. [169
by Samuel Maudo]
Released on September 13, 2013.
- Fix segmentation fault on
Image.save() <wand.image.Image.save>
method. [150
]
Released on September 9, 2013.
- Added
Image.modulate() <wand.image.BaseImage.modulate>
method. [134
by Dan P. Smith] - Added
Image.colorspace <wand.image.BaseImage.colorspace>
property. [135
by Volodymyr Kuznetsov] - Added
Image.unsharp_mask() <wand.image.BaseImage.unsharp_mask>
method. [136
by Volodymyr Kuznetsov] - Added
'jpeg:sampling-factor'
option toImage.options <wand.image.BaseImage.options>
dictionary (and~wand.image.OPTIONS
constant). [137
by Volodymyr Kuznetsov] - Fixed ImageMagick shared library resolution on Arch Linux. [
139
,140
by Sergey Tereschenko] - Added
Image.sample() <wand.image.BaseImage.sample>
method. [142
by Michael Allen] - Fixed a bug that
Image.save() <wand.image.Image.save>
preserves only one frame of the given animation when file-like object is passed. [143
,145
by Michael Allen] - Fixed searching of ImageMagick shared library with HDR support enabled. [
148
,149
by Lipin Dmitriy]
Released on August 4, 2013. It's author's birthday.
- Added
Image.gaussian_blur() <wand.image.BaseImage.gaussian_blur>
method. - Added
Drawing.stroke_color <wand.drawing.Drawing.stroke_color>
property. [129
by Zeray Rice] - Added
Drawing.stroke_width <wand.drawing.Drawing.stroke_width>
property. [130
by Zeray Rice] - Fixed a memory leak of
~wand.color.Color
class. [127
by Wieland Morgenstern] - Fixed a bug that
Image.save() <wand.image.Image.save>
to stream truncates data. [128
by Michael Allen] - Fixed broken
~wand.display.display()
on Python 3. [126
]
Released on July 11, 2013.
- Fixed incorrect encoding of filenames. [
122
] - Fixed key type of
Image.metadata <wand.image.Image.metadata>
dictionary tostr
frombytes
in Python 3. - Fixed CentOS compatibility [
116
,124
by Pierre Vanliefland]- Made :c
DrawSetTextInterlineSpacing()
and :cDrawGetTextInterlineSpacing()
optional. - Added exception in drawing API when trying to use :c
DrawSetTextInterlineSpacing()
and :cDrawGetTextInterlineSpacing()
functions when they are not available. - Added
~wand.exceptions.WandLibraryVersionError
class for library versions issues.
- Made :c
Released on June 23, 2013.
- Fixed
~exceptions.ImportError
on Windows.
Released on June 17, 2013.
whatsnew/0.3
This guide introduces what's new in Wand 0.3.
- Now also works on Python 2.6, 2.7, and 3.2 or higher.
- Added
wand.drawing
module. [64
by Adrian Jung] - Added
Drawing.get_font_metrics() <wand.drawing.Drawing.get_font_metrics>
method. [69
,71
by Cha, Hojeong] - Added
Image.caption() <wand.image.BaseImage.caption>
method. [74
by Cha, Hojeong] - Added optional
color
parameter toImage.trim() <wand.image.BaseImage.trim>
method. - Added
Image.border() <wand.image.BaseImage.border>
method. [2496d37f75d75e9425f95dde07033217dc8afefc
by Jae-Myoung Yu] - Added
resolution
parameter toImage.read() <wand.image.Image.read>
method and the constructor of~wand.image.Image
. [75
by Andrey Antukh] - Added
Image.liquid_rescale() <wand.image.BaseImage.liquid_rescale>
method which does seam carving. See alsoseam-carving
. - Added
Image.metadata <wand.image.Image.metadata>
immutable mapping attribute and~wand.image.Metadata
mapping type for it. [56
by Michael Elovskikh] - Added
Image.channel_images <wand.image.Image.channel_images>
immutable mapping attribute and~wand.image.ChannelImageDict
mapping for it. - Added
Image.channel_depths <wand.image.Image.channel_depths>
immutable mapping attribute and~wand.image.ChannelDepthDict
mapping for it. - Added
Image.composite_channel() <wand.image.BaseImage.composite_channel>
method. - Added
Image.read() <wand.image.Image.read>
method. [58
by Piotr Florczyk] - Added
Image.resolution <wand.image.BaseImage.resolution>
property. [58
by Piotr Florczyk] - Added
Image.blank() <wand.image.Image.blank>
method. [60
by Piotr Florczyk] - Fixed several memory leaks. [
62
by Mitch Lindgren] - Added
~wand.image.ImageProperty
mixin class to maintain a weak reference to the parent image. - Ranamed
wand.image.COMPOSITE_OPS
to~wand.image.COMPOSITE_OPERATORS
. - Now it shows helpful error message when ImageMagick library cannot be found.
- Added IPython-specialized formatter.
- Added
~wand.version.QUANTUM_DEPTH
constant. - Added these properties to
~wand.color.Color
class:~wand.color.Color.red_quantum
~wand.color.Color.green_quantum
~wand.color.Color.blue_quantum
~wand.color.Color.alpha_quantum
~wand.color.Color.red_int8
~wand.color.Color.green_int8
~wand.color.Color.blue_int8
~wand.color.Color.alpha_int8
- Added
Image.normalize() <wand.image.BaseImage.normalize>
method. [95
by Michael Curry] - Added
Image.transparent_color() <wand.image.BaseImage.transparent_color>
method. [98
by Lionel Koenig] - Started supporting resizing and cropping of GIF images. [
88
by Bear Dong,112
by Taeho Kim] - Added
Image.flip() <wand.image.BaseImage.flip>
method. - Added
Image.flop() <wand.image.BaseImage.flop>
method. - Added
Image.orientation <wand.image.BaseImage.orientation>
property. [88574468a38015669dae903185fb328abdd717c0
by Taeho Kim] wand.resource.DestroyedResourceError
becomes a subtype ofwand.exceptions.WandException
.~wand.color.Color
is now hashable, so can be used as a key of dictionaries, or an element of sets. [114
by klutzy]~wand.color.Color
has~wand.color.Color.normalized_string
property.~wand.image.Image
has~wand.image.BaseImage.histogram
dictionary.- Added optional
fuzz
parameter toImage.trim() <wand.image.BaseImage.trim>
method. [113
by Evaldo Junior]
Released on May 28, 2013.
- Fix
~exceptions.NameError
inResource.resource <wand.resource.Resource.resource>
setter. [89
forwarded from Debian bug report #699064 by Jakub Wilk] - Fix the problem of library loading for Mac with Homebrew and Arch Linux. [
102
by Roel Gerrits,44
]
Released on January 25, 2013.
- Fixed a bug that
Image.transparentize() <wand.image.BaseImage.transparentize>
method (andImage.watermark() <wand.image.BaseImage.watermark>
method which internally uses it) didn't work. - Fixed segmentation fault occurred when
Color.red <wand.color.Color.red>
,Color.green <wand.color.Color.green>
, orColor.blue <wand.color.Color.blue>
is accessed. - Added
Color.alpha <wand.color.Color.alpha>
property. - Fixed a bug that format converting using
Image.format <wand.image.BaseImage.format>
property orImage.convert() <wand.image.Image.convert>
method doesn't correctly work to save blob.
Released on September 24, 2012.
- A compatibility fix for FreeBSD. [Patch by Olivier Duchateau]
- Now
~wand.image.Image
can be instantiated without any opening. Instead, it can takewidth
/height
andbackground
. [53
by Michael Elovskikh] - Added
Image.transform() <wand.image.BaseImage.transform>
method which is a convenience method accepting geometry strings to perform cropping and resizing. [50
by Mitch Lindgren] - Added
Image.units <wand.image.BaseImage.units>
property. [45
by Piotr Florczyk] - Now
Image.resize() <wand.image.BaseImage.resize>
method raises a proper error when it fails for any reason. [41
by Piotr Florczyk] - Added
Image.type <wand.image.BaseImage.type>
property. [33
by Yauhen Yakimovich,42
by Piotr Florczyk]
Released on August 19, 2012. Beta version.
- Added
Image.trim() <wand.image.BaseImage.trim>
method. [26
by Jökull Sólberg Auðunsson] - Added
Image.depth <wand.image.BaseImage.depth>
property. [31
by Piotr Florczyk] - Now
~wand.image.Image
can take an optionalformat
hint. [32
by Michael Elovskikh] - Added
Image.alpha_channel <wand.image.BaseImage.alpha_channel>
property. [35
by Piotr Florczyk] - The default value of
Image.resize() <wand.image.BaseImage.resize>
'sfilter
option has changed from'triangle'
to'undefined'
. [37
by Piotr Florczyk] - Added version data of the linked ImageMagick library into
wand.version
module:~wand.version.MAGICK_VERSION
(:cGetMagickVersion
)~wand.version.MAGICK_VERSION_INFO
(:cGetMagickVersion
)~wand.version.MAGICK_VERSION_NUMBER
(:cGetMagickVersion
)~wand.version.MAGICK_RELEASE_DATE
(:cGetMagickReleaseDate
)~wand.version.MAGICK_RELEASE_DATE_STRING
(:cGetMagickReleaseDate
)
Released on June 20, 2012. Alpha version.
- Added
Image.transparentize() <wand.image.BaseImage.transparentize>
method. [19
by Jeremy Axmacher] - Added
Image.composite() <wand.image.BaseImage.composite>
method. [19
by Jeremy Axmacher] - Added
Image.watermark() <wand.image.BaseImage.watermark>
method. [19
by Jeremy Axmacher] - Added
Image.quantum_range <wand.image.BaseImage.quantum_range>
property. [19
by Jeremy Axmacher] - Added
Image.reset_coords() <wand.image.BaseImage.reset_coords>
method andreset_coords
option toImage.rotate() <wand.image.BaseImage.rotate>
method. [20
by Juan Pablo Scaletti] - Added
Image.strip() <wand.image.BaseImage.strip>
method. [23
by Dmitry Vukolov] - Added
Image.compression_quality <wand.image.BaseImage.compression_quality>
property. [23
by Dmitry Vukolov] - Now the current version can be found from the command line interface:
python -m wand.version
.
Released on May 8, 2012. Still alpha version.
- So many Windows compatibility issues are fixed. [
14
by John Simon] - Added
wand.api.libmagick
. - Fixed a bug that raises
~exceptions.AttributeError
when it's trying to warn. [16
by Tim Dettrick] - Now it throws
~exceptions.ImportError
instead of~exceptions.AttributeError
when the shared library fails to load. [17
by Kieran Spear] - Fixed the example usage on index page of the documentation. [
18
by Jeremy Axmacher]
Released on December 23, 2011. Still alpha version.
- Now
wand.version.VERSION_INFO
becomestuple
andwand.version.VERSION
becomes a string. - Added
Image.background_color <wand.image.BaseImage.background_color>
property. - Added
==
operator for~wand.image.Image
type. - Added
hash()
support of~wand.image.Image
type. - Added
Image.signature <wand.image.BaseImage.signature>
property. - Added
wand.display
module. - Changed the theme of Sphinx documentation.
- Changed the start example of the documentation.
Released on December 2, 2011. Still alpha version.
- Wrote some guide documentations:
guide/read
,guide/write
andguide/resizecrop
. - Added
Image.rotate() <wand.image.BaseImage.rotate>
method for in-place rotation. - Made
Image.crop() <wand.image.BaseImage.crop>
to raise properValueError
instead ofIndexError
for invalid width/height arguments. - Changed the type of
Image.resize() <wand.image.BaseImage.resize()>
method'sblur
parameter fromnumbers.Rational
tonumbers.Real
. - Fixed a bug of raising
~exceptions.ValueError
when invalidfilter
has passed toImage.resize() <wand.image.BaseImage.resize>
method.
Released on November 10, 2011. Still alpha version.
- Added
Image.mimetype <wand.image.Image.mimetype>
property. - Added
Image.crop() <wand.image.BaseImage.crop>
method for in-place crop.
Released on October 31, 2011. Still alpha version.
- Removed a side effect of
Image.make_blob() <wand.image.Image.make_blob>
method that changes the image format silently. - Added
Image.format <wand.image.BaseImage.format>
property. - Added
Image.convert() <wand.image.Image.convert>
method. - Fixed a bug about Python 2.6 compatibility.
- Use the internal representation of :c
PixelWand
instead of the string representation for~wand.color.Color
type.
Released on October 28, 2011. Slightly mature alpha version.
- Now
~wand.image.Image
can read Python file objects byfile
keyword argument. - Now
Image.save() <wand.image.Image.save>
method can write into Python file objects byfile
keyword argument. Image.make_blob() <wand.image.Image.make_blob>
'sformat
argument becomes omittable.
Released on October 27, 2011. Hotfix of the malformed Python package.
Released on October 27, 2011. Slightly mature alpha version.
- Pixel getter for
~wand.image.Image
. - Row getter for
~wand.image.Image
. - Mac compatibility.
- Windows compatibility.
- 64-bit processor compatibility.
Released on October 16, 2011. Still alpha version.
~wand.image.Image
implements iterable interface.- Added
wand.color
module. - Added the abstract base class of all Wand resource objects:
wand.resource.Resource
. ~wand.image.Image
implements slicing.- Cropping
~wand.image.Image
using its slicing operator.
Released on October 4, 2011. Still alpha version.
- Now it handles errors and warnings properly and in natural way of Python.
- Added
Image.make_blob() <wand.image.Image.make_blob>
method. - Added
blob
parameter into~wand.image.Image
constructor. - Added
Image.resize() <wand.image.BaseImage.resize>
method. - Added
Image.save() <wand.image.Image.save>
method. - Added
Image.clone() <wand.image.BaseImage.clone>
method. - Drawed the pretty logo picture (thanks to Hyojin Choi).
Released on October 1, 2011. Very alpha version.