A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://libvips.github.io/pyvips/_modules/pyvips/vsource.html below:

pyvips.vsource — pyvips 2.2.1 documentation

pyvips Source code for pyvips.vsource
from __future__ import division

import logging

import pyvips
from pyvips import ffi, vips_lib, Error, _to_bytes

logger = logging.getLogger(__name__)


[docs]class Source(pyvips.Connection):
    """An input connection.

    """

    def __init__(self, pointer):
        # logger.debug('Operation.__init__: pointer = %s', pointer)
        super(Source, self).__init__(pointer)

[docs]    @staticmethod
    def new_from_descriptor(descriptor):
        """Make a new source from a file descriptor (a small integer).

        Make a new source that is attached to the descriptor. For example::

            source = pyvips.Source.new_from_descriptor(0)

        Makes a descriptor attached to stdin.

        You can pass this source to (for example) :meth:`new_from_source`.

        """

        # logger.debug('VipsSource.new_from_descriptor: descriptor = %d',
        #   descriptor)

        # sources are mutable, so we can't use the cache
        pointer = vips_lib.vips_source_new_from_descriptor(descriptor)
        if pointer == ffi.NULL:
            raise Error("can't create source from descriptor {0}"
                        .format(descriptor))

        return Source(pointer)

[docs]    @staticmethod
    def new_from_file(filename):
        """Make a new source from a filename.

        Make a new source that is attached to the named file. For example::

            source = pyvips.Source.new_from_file("myfile.jpg")

        You can pass this source to (for example) :meth:`new_from_source`.

        """

        # logger.debug('VipsSource.new_from_file: filename = %s',
        #              filename)

        pointer = vips_lib.vips_source_new_from_file(_to_bytes(filename))
        if pointer == ffi.NULL:
            raise Error("can't create source from filename {0}"
                        .format(filename))

        return Source(pointer)

[docs]    @staticmethod
    def new_from_memory(data):
        """Make a new source from a memory object.

        Make a new source that is attached to the memory object. For example::

            source = pyvips.Source.new_from_memory("myfile.jpg")

        You can pass this source to (for example) :meth:`new_from_source`.

        The memory object can be anything that supports the Python buffer or
        memoryview protocol.

        """

        # logger.debug('VipsSource.new_from_memory:')

        # py3:
        #   - memoryview has .nbytes for number of bytes in object
        #   - len() returns number of elements in top array
        # py2:
        #   - buffer has no nbytes member
        #   - but len() gives number of bytes in object
        start = ffi.from_buffer(data)
        nbytes = data.nbytes if hasattr(data, 'nbytes') else len(data)

        pointer = vips_lib.vips_source_new_from_memory(start, nbytes)
        if pointer == ffi.NULL:
            raise Error("can't create input source from memory")

        source = Source(pointer)

        # keep a secret reference to the input data to make sure it's not GCed
        source._references = [data]

        return source


__all__ = ['Source']

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4