mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-19 11:27:45 +08:00
BUG: Fix filename handling under Python 3.
This commit is contained in:
@@ -70,10 +70,10 @@ def same_cython(f0, f1):
|
||||
if not (os.path.isfile(f0) and os.path.isfile(f1)):
|
||||
return False
|
||||
|
||||
f0 = open(f0, 'br')
|
||||
f0 = open(f0, 'rb')
|
||||
f0.readline()
|
||||
|
||||
f1 = open(f1, 'br')
|
||||
f1 = open(f1, 'rb')
|
||||
f1.readline()
|
||||
|
||||
return md5sum(f0) == md5sum(f1)
|
||||
|
||||
@@ -3,6 +3,8 @@ import numpy
|
||||
import sys
|
||||
import os
|
||||
|
||||
from numpy.compat import asbytes
|
||||
|
||||
lib_dirs = (os.path.dirname(__file__),
|
||||
'/lib',
|
||||
'/usr/lib',
|
||||
@@ -29,7 +31,7 @@ API = {
|
||||
|
||||
# Albert's ctypes pattern
|
||||
def register_api(lib,api):
|
||||
for f, (restype, argtypes) in api.iteritems():
|
||||
for f, (restype, argtypes) in api.items():
|
||||
func = getattr(lib, f)
|
||||
func.restype = restype
|
||||
func.argtypes = argtypes
|
||||
@@ -244,9 +246,10 @@ def read_multipage(filename, flags=0):
|
||||
(nchannels, width, height) for RGB or RGBA images.
|
||||
|
||||
"""
|
||||
filename = asbytes(filename)
|
||||
ftype = _FI.FreeImage_GetFileType(filename, 0)
|
||||
if ftype == -1:
|
||||
raise ValueError('Cannot determine type of file %s'%filename)
|
||||
raise ValueError('Cannot determine type of file %s' % filename)
|
||||
create_new = False
|
||||
read_only = True
|
||||
keep_cache_in_memory = True
|
||||
@@ -254,7 +257,7 @@ def read_multipage(filename, flags=0):
|
||||
read_only, keep_cache_in_memory,
|
||||
flags)
|
||||
if not multibitmap:
|
||||
raise ValueError('Could not open %s as multi-page image.'%filename)
|
||||
raise ValueError('Could not open %s as multi-page image.' % filename)
|
||||
try:
|
||||
pages = _FI.FreeImage_GetPageCount(multibitmap)
|
||||
arrays = []
|
||||
@@ -270,12 +273,13 @@ def read_multipage(filename, flags=0):
|
||||
|
||||
def _read_bitmap(filename, flags):
|
||||
"""Load a file to a FreeImage bitmap pointer"""
|
||||
ftype = _FI.FreeImage_GetFileType(str(filename), 0)
|
||||
filename = asbytes(filename)
|
||||
ftype = _FI.FreeImage_GetFileType(filename, 0)
|
||||
if ftype == -1:
|
||||
raise ValueError('Cannot determine type of file %s'%filename)
|
||||
raise ValueError('Cannot determine type of file %s' % filename)
|
||||
bitmap = _FI.FreeImage_Load(ftype, filename, flags)
|
||||
if not bitmap:
|
||||
raise ValueError('Could not load file %s'%filename)
|
||||
raise ValueError('Could not load file %s' % filename)
|
||||
return bitmap
|
||||
|
||||
def _wrap_bitmap_bits_in_array(bitmap, shape, dtype):
|
||||
@@ -351,10 +355,10 @@ def write(array, filename, flags=0):
|
||||
filename.
|
||||
|
||||
"""
|
||||
filename = str(filename)
|
||||
filename = asbytes(filename)
|
||||
ftype = _FI.FreeImage_GetFIFFromFilename(filename)
|
||||
if ftype == -1:
|
||||
raise ValueError('Cannot determine type for %s'%filename)
|
||||
raise ValueError('Cannot determine type for %s' % filename)
|
||||
bitmap, fi_type = _array_to_bitmap(array)
|
||||
try:
|
||||
if fi_type == FI_TYPES.FIT_BITMAP:
|
||||
@@ -377,15 +381,16 @@ def write_multipage(arrays, filename, flags=0):
|
||||
deduced from the filename.
|
||||
|
||||
"""
|
||||
filename = asbytes(filename)
|
||||
ftype = _FI.FreeImage_GetFIFFromFilename(filename)
|
||||
if ftype == -1:
|
||||
raise ValueError('Cannot determine type of file %s'%filename)
|
||||
raise ValueError('Cannot determine type of file %s' % filename)
|
||||
create_new = True
|
||||
read_only = False
|
||||
keep_cache_in_memory = True
|
||||
multibitmap = _FI.FreeImage_OpenMultiBitmap(ftype, filename, create_new,
|
||||
read_only, keep_cache_in_memory,
|
||||
0)
|
||||
multibitmap = _FI.FreeImage_OpenMultiBitmap(ftype, filename,
|
||||
create_new, read_only,
|
||||
keep_cache_in_memory, 0)
|
||||
if not multibitmap:
|
||||
raise ValueError('Could not open %s for writing multi-page image.' %
|
||||
filename)
|
||||
|
||||
Reference in New Issue
Block a user