Skip to content

Commit

Permalink
v2.2.4
Browse files Browse the repository at this point in the history
  • Loading branch information
krepe-suZette committed May 24, 2020
1 parent 26ae227 commit 5448ec3
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
18 changes: 9 additions & 9 deletions abunpack.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ def get_resource(self, path_id: int):
if data.format.name == 'ETC_RGB4':
# 이미지 포맷: ETC1 -> RGB(A)
# Alpha 채널도 나오긴 하는데 의미 없어서 자름
im_r, im_g, im_b = cv2.split(np.fromstring(
im_r, im_g, im_b = cv2.split(np.frombuffer(
pyetc.decode_etc1(data.data, data.width, data.height), np.uint8
).reshape(data.height, data.width, 4))[:3]
# 알파 이미지 위치를 찾기 위한 변수.
Expand All @@ -274,19 +274,19 @@ def get_resource(self, path_id: int):
# 재귀적으로 알파 채널 이미지 찾아옴
im_a = self.get_resource(self.find_path_id(im_a_path)).image
# 알파 채널 이미지가 원래 이미지와 크기가 다른 경우가 있는 경우를 위한 리사이징
if im_a.shape[:2] != (data.width, data.height):
im_a = cv2.resize(im_a, None, fx=2, fy=2)
if im_a.shape[:2] != (data.height, data.width):
im_a = cv2.resize(im_a, None, fx=data.width // im_a.shape[1], fy=data.height // im_a.shape[1])
return ResImage(cv2.merge((im_b, im_g, im_r, im_a)), data.name)
else:
return ResImage(cv2.merge((im_b, im_g, im_r)), data.name)
elif data.format.name == "ETC2_RGBA8":
im = cv2.cvtColor(np.fromstring(
im = cv2.cvtColor(np.frombuffer(
pyetc.decode_etc2a8(data.data, data.width, data.height), np.uint8
).reshape(data.height, data.width, 4), cv2.COLOR_BGR2RGBA)
return ResImage(im, data.name)
elif data.format.name == 'RGBA32':
# 이미지 포맷: RGBA32 -> RGBA
im = np.fromstring(data.data, 'uint8').reshape(data.height, data.width, 4)
im = np.frombuffer(data.data, 'uint8').reshape(data.height, data.width, 4)
# cv2에서는 BGRA 색역을 쓰기 때문에 변한
im = cv2.cvtColor(im, cv2.COLOR_BGRA2RGBA)
# 소전은 뒤집힌거 쓰니까 이미지 뒤집기
Expand All @@ -295,7 +295,7 @@ def get_resource(self, path_id: int):
elif data.format.name == 'RGBA4444':
shape = (data.height, data.width)
# numpy array로 변환 (아직 1차원 배열)
im_array = np.fromstring(data.data, dtype=np.uint8)
im_array = np.frombuffer(data.data, dtype=np.uint8)
# 비트 시프트 + 값 곱하기 후 3차원 배열로 만든 후 채널별로 분리
# 0x0 -> 0x00, 0x1 -> 0x11, ... , 0xF -> 0xFF
im_b, im_r = cv2.split((np.bitwise_and(im_array >> 4, 0x0f) * 17).reshape(*shape, 2))
Expand All @@ -307,18 +307,18 @@ def get_resource(self, path_id: int):
# 채널별로 분리 후 다시 합침
# 이상하게 원래 크기 이상으로 뭔가 데이터가 있는데 딱히 필요는 없어서 모양으로 계산해서 필요한 부분만 슬라이싱
data_size = data.height * data.width * 4
im_array = np.fromstring(data.data[:data_size], dtype=np.uint8).reshape(data.height, data.width, 4)
im_array = np.frombuffer(data.data[:data_size], dtype=np.uint8).reshape(data.height, data.width, 4)
im_a, im_r, im_g, im_b = cv2.split(cv2.flip(im_array, 0))
return ResImage(cv2.merge((im_b, im_g, im_r, im_a)), data.name)
elif data.format.name == 'Alpha8':
# 알파 이미지
shape = (data.height, data.width)
return ResImage(cv2.flip(np.fromstring(data.data, "uint8").reshape(shape), 0), data.name)
return ResImage(cv2.flip(np.frombuffer(data.data, "uint8").reshape(shape), 0), data.name)
elif data.format.name == 'RGB24':
# 이미지 포맷: RGB24 -> RGB
# 간단하게 처리
data_size = data.height * data.width * 3
im_array = np.fromstring(data.data[:data_size], dtype=np.uint8).reshape(data.height, data.width, 3)
im_array = np.frombuffer(data.data[:data_size], dtype=np.uint8).reshape(data.height, data.width, 3)
return ResImage(cv2.flip(cv2.cvtColor(im_array, cv2.COLOR_RGB2BGR), 0), data.name)
else:
# 모르는 포맷은 그냥 건너뜀
Expand Down
2 changes: 1 addition & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import acb2wav


__version__ = "2.2.2"
__version__ = "2.2.4"


def main():
Expand Down

0 comments on commit 5448ec3

Please sign in to comment.