Python 위 챗 친구 프로필 사진 맞 춤 법
친구 프로필 사진 가 져 오기
def save_avatar(folder):
"""
:param folder:
"""
itchat.auto_login(hotReload=True)
users = itchat.get_friends() or []
print('%d friends found.' % len(users))
if not os.path.exists(folder):
os.makedirs(folder)
index = 1
for i, user in enumerate(users):
nickname = user.RemarkName
username = user.UserName
file_path = os.path.join(folder, '%03d_%s.png' % (i, nickname))
if not os.path.isfile(file_path): #
avatar = itchat.get_head_img(username)
with open(file_path, 'w') as f:
f.write(avatar)
print('Download %d: %s' % (index, file_path))
index += 1
프로필 사진 을 저장 하 는 폴 더 만 전송 하면 됩 니 다.itchat.auto 를 실행 합 니 다.login(hotReload=True)이후 위 챗 스 캔 인터페이스 가 나타 나 위 챗 로그 인 권한 을 부여 하여 다음 친구 데 이 터 를 가 져 올 수 있 도록 합 니 다.사진 을 다운로드 할 때,나 는 여러 번 실 행 될 때 매번 프로필 사진 을 다시 다운로드 하지 않도록 중복 다운 로드 를 방지 하 는 판단 을 추가 했다.
맞 춤 형 프로필 사진 을 꺼내다.
def get_image_files(folder, filters=None):
"""
:param folder:
:param filters:
:return:
"""
filters = filters or []
filenames = [os.path.join(folder, sub) for sub in os.listdir(folder)
if sub.endswith('.png') and not filters.__contains__(sub)]
return filenames
여기에 따로 방법 을 쓰 는 것 은 지 정 된 위 챗 친구 의 프로필 사진 을 없 애기 위해 서 입 니 다.맞 춤 형 배열 을 계산 하 다.
def calculate_align_way(image_num, force_align=False):
"""
:param image_num:
:return: (rowls, columns)
"""
actual_value = image_num ** 0.5
suggest_value = int(actual_value)
if actual_value == suggest_value or force_align:
return suggest_value, suggest_value
else:
return suggest_value, suggest_value + 1
최종 맞 춤 형 그림 의 행렬 수 를 알 아야 하기 때문에 모든 계산 방법 을 따로 정의 합 니 다.알고리즘 은 그림 총수 에 루트 번 호 를 직접 열 고 추출 한 결과 가 정수 라면 바로 이 결 과 를 되 돌려 주 는 것 입 니 다.정수 가 아니라면 매개 변수 forcealign 은 모든 디 스 플레이 를 강제 할 지 여 부 를 결정 합 니 다.트 루 로 설정 하면 강제로 채 울 수 있 지만 일부 친구 들 은 완전히 표시 되 지 않 습 니 다.반대로 상대 적 인 상황 이다.뒤에 맞 춤 형 그림 의 마지막 줄 에 검은색 빈자리 가 많은 것 을 발 견 했 을 때 이 매개 변 수 를 True 로 변경 하면 됩 니 다.조립 하 다
def join_images(image_files, rows, cols, width, height, save_file=None):
"""
:param image_files:
:param rows:
:param cols:
:param width:
:param height:
:param save_file:
"""
canvas = np.ones((height * rows, width * cols, 3), np.uint8)
for row in range(rows):
for col in range(cols):
index = row * cols + col
if index >= len(image_files):
break
file_path = image_files[index]
im = Image.open(file_path)
im = im.resize((width, height))
im_data = np.array(im)
if len(im_data.shape) == 2:
im_data = np.expand_dims(im_data, -1)
x = col * width
y = row * height
canvas[y: y + height, x: x + width, :] = im_data
image = Image.fromarray(canvas)
image.show()
if save_file:
image.save(save_file)
맞 춤 형 그림 은 과학 컴 퓨 팅 패키지 numpy 와 이미지 라 이브 러 리 PIL 을 호출 하 는데 주로 ndarray 를 조작 하 는 것 입 니 다.마지막 으로 위의 절 차 를 모두 연결 하여 다음 과 같은 주 함 수 를 실행 하면 위의 조합 그림 을 얻 을 수 있 습 니 다.
FOLDER = 'avatars'
if __name__ == '__main__':
#
save_avatar(FOLDER)
#
image_files = get_image_files(FOLDER)
#
rows, columns = calculate_align_way(len(image_files), force_align=True)
#
join_images(image_files, rows, columns, 64, 64, 'result.png')
Github 소스 코드 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.