Fixed database typo and removed unnecessary class identifier.
This commit is contained in:
parent
00ad49a143
commit
45fb349a7d
5098 changed files with 952558 additions and 85 deletions
148
venv/Lib/site-packages/imageio/plugins/example.py
Normal file
148
venv/Lib/site-packages/imageio/plugins/example.py
Normal file
|
@ -0,0 +1,148 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# imageio is distributed under the terms of the (new) BSD License.
|
||||
|
||||
""" Example plugin. You can use this as a template for your own plugin.
|
||||
"""
|
||||
|
||||
import numpy as np
|
||||
|
||||
from .. import formats
|
||||
from ..core import Format
|
||||
|
||||
|
||||
class DummyFormat(Format):
|
||||
""" The dummy format is an example format that does nothing.
|
||||
It will never indicate that it can read or write a file. When
|
||||
explicitly asked to read, it will simply read the bytes. When
|
||||
explicitly asked to write, it will raise an error.
|
||||
|
||||
This documentation is shown when the user does ``help('thisformat')``.
|
||||
|
||||
Parameters for reading
|
||||
----------------------
|
||||
Specify arguments in numpy doc style here.
|
||||
|
||||
Parameters for saving
|
||||
---------------------
|
||||
Specify arguments in numpy doc style here.
|
||||
|
||||
"""
|
||||
|
||||
def _can_read(self, request):
|
||||
# This method is called when the format manager is searching
|
||||
# for a format to read a certain image. Return True if this format
|
||||
# can do it.
|
||||
#
|
||||
# The format manager is aware of the extensions and the modes
|
||||
# that each format can handle. It will first ask all formats
|
||||
# that *seem* to be able to read it whether they can. If none
|
||||
# can, it will ask the remaining formats if they can: the
|
||||
# extension might be missing, and this allows formats to provide
|
||||
# functionality for certain extensions, while giving preference
|
||||
# to other plugins.
|
||||
#
|
||||
# If a format says it can, it should live up to it. The format
|
||||
# would ideally check the request.firstbytes and look for a
|
||||
# header of some kind.
|
||||
#
|
||||
# The request object has:
|
||||
# request.filename: a representation of the source (only for reporting)
|
||||
# request.firstbytes: the first 256 bytes of the file.
|
||||
# request.mode[0]: read or write mode
|
||||
# request.mode[1]: what kind of data the user expects: one of 'iIvV?'
|
||||
|
||||
if request.mode[1] in (self.modes + "?"):
|
||||
if request.extension in self.extensions:
|
||||
return True
|
||||
|
||||
def _can_write(self, request):
|
||||
# This method is called when the format manager is searching
|
||||
# for a format to write a certain image. It will first ask all
|
||||
# formats that *seem* to be able to write it whether they can.
|
||||
# If none can, it will ask the remaining formats if they can.
|
||||
#
|
||||
# Return True if the format can do it.
|
||||
|
||||
# In most cases, this code does suffice:
|
||||
if request.mode[1] in (self.modes + "?"):
|
||||
if request.extension in self.extensions:
|
||||
return True
|
||||
|
||||
# -- reader
|
||||
|
||||
class Reader(Format.Reader):
|
||||
def _open(self, some_option=False, length=1):
|
||||
# Specify kwargs here. Optionally, the user-specified kwargs
|
||||
# can also be accessed via the request.kwargs object.
|
||||
#
|
||||
# The request object provides two ways to get access to the
|
||||
# data. Use just one:
|
||||
# - Use request.get_file() for a file object (preferred)
|
||||
# - Use request.get_local_filename() for a file on the system
|
||||
self._fp = self.request.get_file()
|
||||
self._length = length # passed as an arg in this case for testing
|
||||
self._data = None
|
||||
|
||||
def _close(self):
|
||||
# Close the reader.
|
||||
# Note that the request object will close self._fp
|
||||
pass
|
||||
|
||||
def _get_length(self):
|
||||
# Return the number of images. Can be np.inf
|
||||
return self._length
|
||||
|
||||
def _get_data(self, index):
|
||||
# Return the data and meta data for the given index
|
||||
if index >= self._length:
|
||||
raise IndexError("Image index %i > %i" % (index, self._length))
|
||||
# Read all bytes
|
||||
if self._data is None:
|
||||
self._data = self._fp.read()
|
||||
# Put in a numpy array
|
||||
im = np.frombuffer(self._data, "uint8")
|
||||
im.shape = len(im), 1
|
||||
# Return array and dummy meta data
|
||||
return im, {}
|
||||
|
||||
def _get_meta_data(self, index):
|
||||
# Get the meta data for the given index. If index is None, it
|
||||
# should return the global meta data.
|
||||
return {} # This format does not support meta data
|
||||
|
||||
# -- writer
|
||||
|
||||
class Writer(Format.Writer):
|
||||
def _open(self, flags=0):
|
||||
# Specify kwargs here. Optionally, the user-specified kwargs
|
||||
# can also be accessed via the request.kwargs object.
|
||||
#
|
||||
# The request object provides two ways to write the data.
|
||||
# Use just one:
|
||||
# - Use request.get_file() for a file object (preferred)
|
||||
# - Use request.get_local_filename() for a file on the system
|
||||
self._fp = self.request.get_file()
|
||||
|
||||
def _close(self):
|
||||
# Close the reader.
|
||||
# Note that the request object will close self._fp
|
||||
pass
|
||||
|
||||
def _append_data(self, im, meta):
|
||||
# Process the given data and meta data.
|
||||
raise RuntimeError("The dummy format cannot write image data.")
|
||||
|
||||
def set_meta_data(self, meta):
|
||||
# Process the given meta data (global for all images)
|
||||
# It is not mandatory to support this.
|
||||
raise RuntimeError("The dummy format cannot write meta data.")
|
||||
|
||||
|
||||
# Register. You register an *instance* of a Format class. Here specify:
|
||||
format = DummyFormat(
|
||||
"dummy", # short name
|
||||
"An example format that does nothing.", # one line descr.
|
||||
".foobar .nonexistentext", # list of extensions
|
||||
"iI", # modes, characters in iIvV
|
||||
)
|
||||
formats.add_format(format)
|
Loading…
Add table
Add a link
Reference in a new issue