Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
31397c98
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
31397c98
编写于
3月 28, 2020
作者:
L
LaraStuStu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Create image.py
上级
aa9fe148
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
82 addition
and
0 deletion
+82
-0
DataAnnotation/labelme/labelme/utils/image.py
DataAnnotation/labelme/labelme/utils/image.py
+82
-0
未找到文件。
DataAnnotation/labelme/labelme/utils/image.py
0 → 100644
浏览文件 @
31397c98
import
base64
import
io
import
numpy
as
np
import
PIL.ExifTags
import
PIL.Image
import
PIL.ImageOps
def
img_b64_to_arr
(
img_b64
):
f
=
io
.
BytesIO
()
f
.
write
(
base64
.
b64decode
(
img_b64
))
img_arr
=
np
.
array
(
PIL
.
Image
.
open
(
f
))
return
img_arr
def
img_arr_to_b64
(
img_arr
):
img_pil
=
PIL
.
Image
.
fromarray
(
img_arr
)
f
=
io
.
BytesIO
()
img_pil
.
save
(
f
,
format
=
'PNG'
)
img_bin
=
f
.
getvalue
()
if
hasattr
(
base64
,
'encodebytes'
):
img_b64
=
base64
.
encodebytes
(
img_bin
)
else
:
img_b64
=
base64
.
encodestring
(
img_bin
)
return
img_b64
def
img_data_to_png_data
(
img_data
):
with
io
.
BytesIO
()
as
f
:
f
.
write
(
img_data
)
img
=
PIL
.
Image
.
open
(
f
)
with
io
.
BytesIO
()
as
f
:
img
.
save
(
f
,
'PNG'
)
f
.
seek
(
0
)
return
f
.
read
()
def
apply_exif_orientation
(
image
):
try
:
exif
=
image
.
_getexif
()
except
AttributeError
:
exif
=
None
if
exif
is
None
:
return
image
exif
=
{
PIL
.
ExifTags
.
TAGS
[
k
]:
v
for
k
,
v
in
exif
.
items
()
if
k
in
PIL
.
ExifTags
.
TAGS
}
orientation
=
exif
.
get
(
'Orientation'
,
None
)
if
orientation
==
1
:
# do nothing
return
image
elif
orientation
==
2
:
# left-to-right mirror
return
PIL
.
ImageOps
.
mirror
(
image
)
elif
orientation
==
3
:
# rotate 180
return
image
.
transpose
(
PIL
.
Image
.
ROTATE_180
)
elif
orientation
==
4
:
# top-to-bottom mirror
return
PIL
.
ImageOps
.
flip
(
image
)
elif
orientation
==
5
:
# top-to-left mirror
return
PIL
.
ImageOps
.
mirror
(
image
.
transpose
(
PIL
.
Image
.
ROTATE_270
))
elif
orientation
==
6
:
# rotate 270
return
image
.
transpose
(
PIL
.
Image
.
ROTATE_270
)
elif
orientation
==
7
:
# top-to-right mirror
return
PIL
.
ImageOps
.
mirror
(
image
.
transpose
(
PIL
.
Image
.
ROTATE_90
))
elif
orientation
==
8
:
# rotate 90
return
image
.
transpose
(
PIL
.
Image
.
ROTATE_90
)
else
:
return
image
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录