[Bf-blender-cvs] [2fae171] master: Fix T47986: OBJ Import fails w/ imagepath encoding
Campbell Barton
noreply at git.blender.org
Tue Mar 29 09:27:58 CEST 2016
Commit: 2fae1719f82c10e3ac2bfba7cc45f2534a0b1a02
Author: Campbell Barton
Date: Tue Mar 29 18:22:35 2016 +1100
Branches: master
https://developer.blender.org/rB2fae1719f82c10e3ac2bfba7cc45f2534a0b1a02
Fix T47986: OBJ Import fails w/ imagepath encoding
===================================================================
M release/scripts/modules/bpy/path.py
M release/scripts/modules/bpy_extras/image_utils.py
===================================================================
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py
index 99c46e4..30f6c8e 100644
--- a/release/scripts/modules/bpy/path.py
+++ b/release/scripts/modules/bpy/path.py
@@ -35,6 +35,7 @@ __all__ = (
"extensions_audio",
"is_subdir",
"module_names",
+ "native_pathsep",
"reduce_dirs",
"relpath",
"resolve_ncase",
@@ -349,6 +350,28 @@ def basename(path):
return _os.path.basename(path[2:] if path[:2] in {"//", b"//"} else path)
+def native_pathsep(path):
+ """
+ Replace the path separator with the systems native ``os.sep``.
+ """
+ if type(path) is str:
+ if _os.sep == "/":
+ return path.replace("\\", "/")
+ else:
+ if path.startswith("//"):
+ return "//" + path[2:].replace("/", "\\")
+ else:
+ return path.replace("/", "\\")
+ else: # bytes
+ if _os.sep == "/":
+ return path.replace(b"\\", b"/")
+ else:
+ if path.startswith(b"//"):
+ return b"//" + path[2:].replace(b"/", b"\\")
+ else:
+ return path.replace(b"/", b"\\")
+
+
def reduce_dirs(dirs):
"""
Given a sequence of directories, remove duplicates and
diff --git a/release/scripts/modules/bpy_extras/image_utils.py b/release/scripts/modules/bpy_extras/image_utils.py
index d078d63..f772aab 100644
--- a/release/scripts/modules/bpy_extras/image_utils.py
+++ b/release/scripts/modules/bpy_extras/image_utils.py
@@ -80,9 +80,12 @@ def load_image(imagepath,
# Utility Functions
def _image_load_placeholder(path):
- name = bpy.path.basename(path)
- if type(name) == bytes:
- name = name.decode("utf-8", "replace")
+ name = path
+ if type(path) is str:
+ name = name.encode("utf-8", "replace")
+ name = name.decode("utf-8", "replace")
+ name = os.path.basename(name)
+
image = bpy.data.images.new(name, 128, 128)
# allow the path to be resolved later
image.filepath = path
@@ -147,6 +150,8 @@ def load_image(imagepath,
# -------------------------------------------------------------------------
+ imagepath = bpy.path.native_pathsep(imagepath)
+
if verbose:
print("load_image('%s', '%s', ...)" % (imagepath, dirname))
More information about the Bf-blender-cvs
mailing list