start using overrides in Python
This commit is contained in:
parent
76a9e0d161
commit
a0988ffc31
17
TODO
17
TODO
|
@ -1,25 +1,12 @@
|
||||||
- im_greyc_mask compat is not working?
|
|
||||||
|
|
||||||
vips im_greyc_mask k2.jpg x.jpg k4.jpg 1 100 0.5 0.5 0.5 0.5 0.5 0.5 1
|
|
||||||
1 1
|
|
||||||
|
|
||||||
vips_gmic_gen is never called
|
|
||||||
|
|
||||||
|
|
||||||
- python:
|
- python:
|
||||||
|
|
||||||
- could import like this:
|
|
||||||
|
|
||||||
from gi.repository import Vips
|
|
||||||
import vips_additions
|
|
||||||
|
|
||||||
ie. make it a module, not a package, and make it clear that it
|
|
||||||
modifies Vips rather than adding anything itself
|
|
||||||
|
|
||||||
- should be a separate package? pyvips?
|
- should be a separate package? pyvips?
|
||||||
|
|
||||||
easier to get into CPAN or whatever the python thing is called
|
easier to get into CPAN or whatever the python thing is called
|
||||||
|
|
||||||
|
- do more tests
|
||||||
|
|
||||||
- put exif autorotate into jpeg load
|
- put exif autorotate into jpeg load
|
||||||
|
|
||||||
see
|
see
|
||||||
|
|
|
@ -5,3 +5,7 @@ binding for libvips.
|
||||||
|
|
||||||
This is the vips8 API, so it's not yet fully implemented. Use the older vipsCC
|
This is the vips8 API, so it's not yet fully implemented. Use the older vipsCC
|
||||||
binding if you want a more complete system.
|
binding if you want a more complete system.
|
||||||
|
|
||||||
|
To install, try:
|
||||||
|
|
||||||
|
sudo cp Vips.py /usr/lib/python2.7/dist-packages/gi/overrides
|
||||||
|
|
|
@ -1,14 +1,36 @@
|
||||||
#!/usr/bin/python
|
# -*- Mode: Python; py-indent-offset: 4 -*-
|
||||||
|
# vim: tabstop=4 shiftwidth=4 expandtab
|
||||||
|
|
||||||
|
# copy this file to /usr/lib/python2.7/dist-packages/gi/overrides/
|
||||||
|
|
||||||
|
# This file is part of VIPS.
|
||||||
|
#
|
||||||
|
# VIPS is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
# Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
|
||||||
|
# more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
# you might need this in your .bashrc
|
from gi import _gobject
|
||||||
# export GI_TYPELIB_PATH=$VIPSHOME/lib/girepository-1.0
|
from gi.repository import GObject
|
||||||
|
from ..importer import modules
|
||||||
|
|
||||||
from gi.repository import GLib, GObject, Vips
|
Vips = modules['Vips']._introspection_module
|
||||||
|
__all__ = []
|
||||||
|
|
||||||
# start up vips!
|
# start up vips!
|
||||||
Vips.init(sys.argv[0])
|
Vips.init(sys.argv[0])
|
||||||
|
@ -60,6 +82,8 @@ class Error(Exception):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '%s\n %s' % (self.message, self.detail)
|
return '%s\n %s' % (self.message, self.detail)
|
||||||
|
|
||||||
|
Vips.Error = Error
|
||||||
|
|
||||||
class Argument:
|
class Argument:
|
||||||
def __init__(self, op, prop):
|
def __init__(self, op, prop):
|
||||||
self.op = op;
|
self.op = op;
|
||||||
|
@ -102,6 +126,8 @@ class Argument:
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
Vips.Argument = Argument
|
||||||
|
|
||||||
def _call_base(name, required, optional, self = None, option_string = None):
|
def _call_base(name, required, optional, self = None, option_string = None):
|
||||||
logging.debug('_call_base name=%s, required=%s optional=%s' %
|
logging.debug('_call_base name=%s, required=%s optional=%s' %
|
||||||
(name, required, optional))
|
(name, required, optional))
|
||||||
|
@ -227,6 +253,8 @@ def _call_base(name, required, optional, self = None, option_string = None):
|
||||||
def call(name, *args, **kwargs):
|
def call(name, *args, **kwargs):
|
||||||
return _call_base(name, args, kwargs)
|
return _call_base(name, args, kwargs)
|
||||||
|
|
||||||
|
Vips.call = call
|
||||||
|
|
||||||
# here from getattr ... try to run the attr as a method
|
# here from getattr ... try to run the attr as a method
|
||||||
def _call_instance(self, name, args, kwargs):
|
def _call_instance(self, name, args, kwargs):
|
||||||
return _call_base(name, args, kwargs, self)
|
return _call_base(name, args, kwargs, self)
|
||||||
|
@ -242,6 +270,8 @@ def vips_image_new_from_file(cls, vips_filename, **kwargs):
|
||||||
|
|
||||||
return _call_base(loader, [filename], kwargs, None, option_string)
|
return _call_base(loader, [filename], kwargs, None, option_string)
|
||||||
|
|
||||||
|
setattr(Vips.Image, 'new_from_file', classmethod(vips_image_new_from_file))
|
||||||
|
|
||||||
# this is a class method
|
# this is a class method
|
||||||
def vips_image_new_from_buffer(cls, data, option_string, **kwargs):
|
def vips_image_new_from_buffer(cls, data, option_string, **kwargs):
|
||||||
loader = Vips.Foreign.find_load_buffer(data)
|
loader = Vips.Foreign.find_load_buffer(data)
|
||||||
|
@ -249,6 +279,8 @@ def vips_image_new_from_buffer(cls, data, option_string, **kwargs):
|
||||||
raise Error('No known loader for buffer.')
|
raise Error('No known loader for buffer.')
|
||||||
logging.debug('Image.new_from_buffer: loader = %s' % loader)
|
logging.debug('Image.new_from_buffer: loader = %s' % loader)
|
||||||
|
|
||||||
|
setattr(Vips.Image, 'new_from_buffer', classmethod(vips_image_new_from_buffer))
|
||||||
|
|
||||||
# this is a class method
|
# this is a class method
|
||||||
def vips_image_new_from_array(cls, array, scale = 1, offset = 0):
|
def vips_image_new_from_array(cls, array, scale = 1, offset = 0):
|
||||||
# we accept a 1D array and assume height == 1, or a 2D array and check all
|
# we accept a 1D array and assume height == 1, or a 2D array and check all
|
||||||
|
@ -276,6 +308,8 @@ def vips_image_new_from_array(cls, array, scale = 1, offset = 0):
|
||||||
|
|
||||||
return image
|
return image
|
||||||
|
|
||||||
|
setattr(Vips.Image, 'new_from_array', classmethod(vips_image_new_from_array))
|
||||||
|
|
||||||
def vips_image_getattr(self, name):
|
def vips_image_getattr(self, name):
|
||||||
logging.debug('Image.__getattr__ %s' % name)
|
logging.debug('Image.__getattr__ %s' % name)
|
||||||
|
|
||||||
|
@ -546,13 +580,6 @@ def vips_exp10(self):
|
||||||
def vips_bandjoin2(self, other):
|
def vips_bandjoin2(self, other):
|
||||||
return Vips.Image.bandjoin([self, other])
|
return Vips.Image.bandjoin([self, other])
|
||||||
|
|
||||||
# paste our methods into Vips.Image
|
|
||||||
|
|
||||||
# class methods
|
|
||||||
setattr(Vips.Image, 'new_from_file', classmethod(vips_image_new_from_file))
|
|
||||||
setattr(Vips.Image, 'new_from_buffer', classmethod(vips_image_new_from_buffer))
|
|
||||||
setattr(Vips.Image, 'new_from_array', classmethod(vips_image_new_from_array))
|
|
||||||
|
|
||||||
# Search for all VipsOperation which don't have an input image object ... these
|
# Search for all VipsOperation which don't have an input image object ... these
|
||||||
# become class methods
|
# become class methods
|
||||||
|
|
||||||
|
@ -663,8 +690,3 @@ Vips.Image.__ne__ = vips_notequal
|
||||||
# the cast operators int(), long() and float() must return numeric types, so we
|
# the cast operators int(), long() and float() must return numeric types, so we
|
||||||
# can't define them for images
|
# can't define them for images
|
||||||
|
|
||||||
# Add other classes to Vips
|
|
||||||
Vips.Error = Error
|
|
||||||
Vips.Argument = Argument
|
|
||||||
Vips.call = call
|
|
||||||
|
|
10
python/im.sh
10
python/im.sh
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
convert $1 \
|
|
||||||
-background Red -density 300 \
|
|
||||||
-font /usr/share/fonts/truetype/msttcorefonts/Arial.ttf \
|
|
||||||
-pointsize 12 -gravity south -splice 0x150 \
|
|
||||||
-gravity southwest -annotate +50+50 "left corner" \
|
|
||||||
-gravity southeast -annotate +50+50 'right corner' \
|
|
||||||
+repage \
|
|
||||||
$2
|
|
|
@ -0,0 +1,429 @@
|
||||||
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_abs (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_acos (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_add (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_and (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_asin (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_atan (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_avg (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_ceil (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_conjugate (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_cos (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_deviate (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_div (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_equal (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_exp (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_exp10 (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_floor (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_floordiv (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_histfind (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_histfind_indexed (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_histfind_ndim (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_hough_circle (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_hough_line (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_invert (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_less (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_lesseq (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_log (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_log10 (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_lshift (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_max (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_measure (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_min (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_mod (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_more (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_moreeq (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_mul (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_neg (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_noteq (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_or (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_polar (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_pos (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_pow (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_profile (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_project (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_rect (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_rint (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_rshift (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_sign (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_sin (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_stats (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_sub (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_sum (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_tan (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
ERROR: test_xor (__main__.TestArithmetic)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "./test_arithmetic.py", line 110, in setUp
|
||||||
|
im = Vips.Image.mask_ideal(100, 100, 0.5, reject = True, optical = True)
|
||||||
|
AttributeError: type object 'Image' has no attribute 'mask_ideal'
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 53 tests in 0.010s
|
||||||
|
|
||||||
|
FAILED (errors=53)
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 176 KiB |
|
@ -7,7 +7,6 @@ import math
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
unsigned_formats = [Vips.BandFormat.UCHAR,
|
unsigned_formats = [Vips.BandFormat.UCHAR,
|
||||||
Vips.BandFormat.USHORT,
|
Vips.BandFormat.USHORT,
|
|
@ -7,7 +7,6 @@ import math
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
unsigned_formats = [Vips.BandFormat.UCHAR,
|
unsigned_formats = [Vips.BandFormat.UCHAR,
|
||||||
Vips.BandFormat.USHORT,
|
Vips.BandFormat.USHORT,
|
|
@ -7,7 +7,6 @@ import math
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
unsigned_formats = [Vips.BandFormat.UCHAR,
|
unsigned_formats = [Vips.BandFormat.UCHAR,
|
||||||
Vips.BandFormat.USHORT,
|
Vips.BandFormat.USHORT,
|
|
@ -7,6 +7,5 @@ import math
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import math
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
class TestOverrides(unittest.TestCase):
|
class TestOverrides(unittest.TestCase):
|
||||||
|
|
|
@ -7,8 +7,6 @@ logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
|
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.black(100, 100)
|
a = Vips.Image.black(100, 100)
|
||||||
|
|
||||||
a.draw_circle(128, 50, 50, 20)
|
a.draw_circle(128, 50, 50, 20)
|
||||||
|
|
|
@ -7,8 +7,6 @@ import sys
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
|
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.new_from_file(sys.argv[1])
|
a = Vips.Image.new_from_file(sys.argv[1])
|
||||||
|
|
||||||
ipct = a.get("ipct-data")
|
ipct = a.get("ipct-data")
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
im = Vips.Image.new_from_file(sys.argv[1], access = Vips.Access.SEQUENTIAL)
|
im = Vips.Image.new_from_file(sys.argv[1], access = Vips.Access.SEQUENTIAL)
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
import logging
|
import logging
|
||||||
logging.basicConfig(level = logging.DEBUG)
|
logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
Vips.cache_set_trace(True)
|
Vips.cache_set_trace(True)
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,6 @@ import sys
|
||||||
#import logging
|
#import logging
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
|
|
||||||
Vips.cache_set_trace(True)
|
Vips.cache_set_trace(True)
|
||||||
|
|
|
@ -6,7 +6,6 @@ import sys
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.new_from_file(sys.argv[1])
|
a = Vips.Image.new_from_file(sys.argv[1])
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import sys
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.new_from_file(sys.argv[1])
|
a = Vips.Image.new_from_file(sys.argv[1])
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import sys
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.new_from_file(sys.argv[1])
|
a = Vips.Image.new_from_file(sys.argv[1])
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import sys
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.new_from_file(sys.argv[1])
|
a = Vips.Image.new_from_file(sys.argv[1])
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import sys
|
||||||
#logging.basicConfig(level = logging.DEBUG)
|
#logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.new_from_array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 8, 128)
|
a = Vips.Image.new_from_array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 8, 128)
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,6 @@ logging.basicConfig(level = logging.DEBUG)
|
||||||
|
|
||||||
from gi.repository import Vips
|
from gi.repository import Vips
|
||||||
|
|
||||||
from vips8 import vips
|
|
||||||
|
|
||||||
a = Vips.Image.black(100, 100)
|
a = Vips.Image.black(100, 100)
|
||||||
|
|
||||||
a.write_to_file("x.v")
|
a.write_to_file("x.v")
|
||||||
|
|
Loading…
Reference in New Issue