Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
imgyaso
提交
60e05c78
I
imgyaso
项目概览
OpenDocCN
/
imgyaso
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
imgyaso
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
60e05c78
编写于
7月 27, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-07-27 12:31:53
上级
1e415c47
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
35 addition
and
15 deletion
+35
-15
imgyaso/adathres.py
imgyaso/adathres.py
+7
-3
imgyaso/dither.py
imgyaso/dither.py
+14
-7
imgyaso/quant.py
imgyaso/quant.py
+7
-2
imgyaso/trunc.py
imgyaso/trunc.py
+7
-3
未找到文件。
imgyaso/adathres.py
浏览文件 @
60e05c78
...
...
@@ -7,11 +7,15 @@ from os import path
import
sys
def
adathres_bts
(
img
,
win
=
9
,
beta
=
0.9
):
img
=
cv2
.
imdecode
(
np
.
frombuffer
(
img
,
np
.
uint8
),
cv2
.
IMREAD_GRAYSCALE
)
img
=
np
.
frombuffer
(
img
,
np
.
uint8
)
img
=
cv2
.
imdecode
(
img
,
cv2
.
IMREAD_GRAYSCALE
)
if
img
is
None
:
return
None
img
=
adathres
(
img
,
win
,
beta
).
astype
(
np
.
uint8
)
img
=
bytes
(
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_BILEVEL
,
1
])[
1
])
return
img
img
=
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_BILEVEL
,
1
]
)[
1
]
return
bytes
(
img
)
def
adathres
(
img
,
win
=
9
,
beta
=
0.9
):
if
win
%
2
==
0
:
win
=
win
-
1
...
...
imgyaso/dither.py
浏览文件 @
60e05c78
...
...
@@ -109,11 +109,15 @@ def grid(img):
return
img
def
grid_bts
(
img
):
img
=
cv2
.
imdecode
(
np
.
frombuffer
(
img
,
np
.
uint8
),
cv2
.
IMREAD_GRAYSCALE
)
img
=
np
.
frombuffer
(
img
,
np
.
uint8
)
img
=
cv2
.
imdecode
(
img
,
cv2
.
IMREAD_GRAYSCALE
)
if
img
is
None
:
return
None
img
=
grid
(
img
).
astype
(
np
.
uint8
)
img
=
bytes
(
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
])[
1
])
return
img
img
=
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
]
)[
1
]
return
bytes
(
img
)
def
noise
(
img
):
assert
img
.
ndim
==
2
...
...
@@ -130,12 +134,15 @@ def noise(img):
return
img
def
noise_bts
(
img
):
img
=
cv2
.
imdecode
(
np
.
frombuffer
(
img
,
np
.
uint8
),
cv2
.
IMREAD_GRAYSCALE
)
img
=
np
.
frombuffer
(
img
,
np
.
uint8
)
img
=
cv2
.
imdecode
(
img
,
cv2
.
IMREAD_GRAYSCALE
)
if
img
is
None
:
return
None
img
=
noise
(
img
).
astype
(
np
.
uint8
)
img
=
bytes
(
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
])[
1
])
return
img
img
=
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
]
)[
1
]
return
bytes
(
img
)
def
main
():
fname
=
sys
.
argv
[
1
]
...
...
imgyaso/quant.py
浏览文件 @
60e05c78
...
...
@@ -6,9 +6,14 @@ from io import BytesIO
from
.util
import
*
def
pngquant
(
img
,
ncolors
=
8
):
img
=
bytes
(
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
])[
1
])
img
=
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
]
)[
1
]
img
=
bytes
(
img
)
img
=
pngquant_bts
(
img
,
ncolors
)
return
cv2
.
imdecode
(
np
.
frombuffer
(
img
,
np
.
uint8
),
cv2
.
IMREAD_UNCHANGED
)
img
=
np
.
frombuffer
(
img
,
np
.
uint8
)
return
cv2
.
imdecode
(
img
,
cv2
.
IMREAD_UNCHANGED
)
def
pngquant_bts
(
img
,
ncolors
=
8
):
img
=
conv2png
(
img
)
...
...
imgyaso/trunc.py
浏览文件 @
60e05c78
...
...
@@ -3,11 +3,15 @@ import cv2
import
numpy
as
np
def
trunc_bts
(
img
,
l
=
4
):
img
=
cv2
.
imdecode
(
np
.
frombuffer
(
img
,
np
.
uint8
),
cv2
.
IMREAD_GRAYSCALE
)
img
=
np
.
frombuffer
(
img
,
np
.
uint8
)
img
=
cv2
.
imdecode
(
img
,
cv2
.
IMREAD_GRAYSCALE
)
if
img
is
None
:
return
None
img
=
trunc
(
img
,
l
).
astype
(
np
.
uint8
)
img
=
bytes
(
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
])[
1
])
return
img
img
=
cv2
.
imencode
(
'.png'
,
img
,
[
cv2
.
IMWRITE_PNG_COMPRESSION
,
9
]
)[
1
]
return
bytes
(
img
)
def
trunc
(
img
,
l
=
4
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录