mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-22 19:02:17 +08:00
支持显示聊天图片
This commit is contained in:
parent
edbe83ff0b
commit
55425daa44
@ -4,15 +4,12 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="84e65474-7da9-466d-baf3-cc88dde3ffdd" name="变更" comment="更新wx选择的路径">
|
<list default="true" id="84e65474-7da9-466d-baf3-cc88dde3ffdd" name="变更" comment="显示聊天图片">
|
||||||
<change afterPath="$PROJECT_DIR$/app/util/path.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/DataBase/hard_link.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/DataBase/hard_link.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/components/bubble_message.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/components/bubble_message.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/components/bubble_message.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/components/bubble_message.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/Icon.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/Icon.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/decrypt/dat2pic.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/decrypt/dat2pic.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/chat/chat_info.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/chat/chat_info.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/ui_pc/tool/pc_decrypt/pc_decrypt.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/tool/pc_decrypt/pc_decrypt.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/mainview.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/mainview.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/util/path.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/util/path.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/util/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/util/__init__.py" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -45,10 +42,23 @@
|
|||||||
</map>
|
</map>
|
||||||
</branch-storage>
|
</branch-storage>
|
||||||
</excluded-from-favorite>
|
</excluded-from-favorite>
|
||||||
|
<favorite-branches>
|
||||||
|
<branch-storage>
|
||||||
|
<map>
|
||||||
|
<entry type="LOCAL">
|
||||||
|
<value>
|
||||||
|
<list>
|
||||||
|
<branch-info repo="$PROJECT_DIR$" source="dev_zsk" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</branch-storage>
|
||||||
|
</favorite-branches>
|
||||||
<option name="PUSH_AUTO_UPDATE" value="true" />
|
<option name="PUSH_AUTO_UPDATE" value="true" />
|
||||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||||
<map>
|
<map>
|
||||||
<entry key="$PROJECT_DIR$" value="dev_zsk" />
|
<entry key="$PROJECT_DIR$" value="master" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
@ -69,12 +79,12 @@
|
|||||||
<option name="branches">
|
<option name="branches">
|
||||||
<list>
|
<list>
|
||||||
<RecentBranch>
|
<RecentBranch>
|
||||||
<option name="branchName" value="master" />
|
<option name="branchName" value="dev_zsk" />
|
||||||
<option name="lastUsedInstant" value="1700478623" />
|
<option name="lastUsedInstant" value="1700571991" />
|
||||||
</RecentBranch>
|
</RecentBranch>
|
||||||
<RecentBranch>
|
<RecentBranch>
|
||||||
<option name="branchName" value="dev_zsk" />
|
<option name="branchName" value="master" />
|
||||||
<option name="lastUsedInstant" value="1700046130" />
|
<option name="lastUsedInstant" value="1700478623" />
|
||||||
</RecentBranch>
|
</RecentBranch>
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
@ -88,7 +98,7 @@
|
|||||||
<component name="GithubPullRequestsUISettings">
|
<component name="GithubPullRequestsUISettings">
|
||||||
<option name="selectedUrlAndAccountId">
|
<option name="selectedUrlAndAccountId">
|
||||||
<UrlAndAccount>
|
<UrlAndAccount>
|
||||||
<option name="accountId" value="17f6adba-af7f-4dcb-aeb1-4ed3d744f378" />
|
<option name="accountId" value="44b9bc65-44ba-4722-bca5-f2a7cbe5ba1f" />
|
||||||
<option name="url" value="https://github.com/LC044/WeChatMsg.git" />
|
<option name="url" value="https://github.com/LC044/WeChatMsg.git" />
|
||||||
</UrlAndAccount>
|
</UrlAndAccount>
|
||||||
</option>
|
</option>
|
||||||
@ -105,15 +115,15 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"DefaultHtmlFileTemplate": "HTML File",
|
"DefaultHtmlFileTemplate": "HTML File",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"last_opened_file_path": "D:/Program Files/Python310/Scripts/pyuic5.exe",
|
"last_opened_file_path": "D:/Program Files/Python310/Scripts/pyuic5.exe",
|
||||||
"settings.editor.selected.configurable": "preferences.pluginManager"
|
"settings.editor.selected.configurable": "preferences.pluginManager"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
<recent name="D:\Project\Python\WeChatMsg\app\ui_pc\tool" />
|
<recent name="D:\Project\Python\WeChatMsg\app\ui_pc\tool" />
|
||||||
@ -122,6 +132,27 @@
|
|||||||
</key>
|
</key>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager" selected="Python.main_pc">
|
<component name="RunManager" selected="Python.main_pc">
|
||||||
|
<configuration name="bubble_message" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="WeChatMsg" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/components" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app/components/bubble_message.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
<configuration name="decrypt_window" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="decrypt_window" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="WeChatMsg" />
|
<module name="WeChatMsg" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
@ -143,48 +174,6 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="hard_link" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
|
||||||
<module name="WeChatMsg" />
|
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
|
||||||
<option name="PARENT_ENVS" value="true" />
|
|
||||||
<envs>
|
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
|
||||||
</envs>
|
|
||||||
<option name="SDK_HOME" value="" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/DataBase" />
|
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app/DataBase/hard_link.py" />
|
|
||||||
<option name="PARAMETERS" value="" />
|
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
|
||||||
<option name="MODULE_MODE" value="false" />
|
|
||||||
<option name="REDIRECT_INPUT" value="false" />
|
|
||||||
<option name="INPUT_FILE" value="" />
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
<configuration name="main" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
|
||||||
<module name="WeChatMsg" />
|
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
|
||||||
<option name="PARENT_ENVS" value="true" />
|
|
||||||
<envs>
|
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
|
||||||
</envs>
|
|
||||||
<option name="SDK_HOME" value="" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main.py" />
|
|
||||||
<option name="PARAMETERS" value="" />
|
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
|
||||||
<option name="MODULE_MODE" value="false" />
|
|
||||||
<option name="REDIRECT_INPUT" value="false" />
|
|
||||||
<option name="INPUT_FILE" value="" />
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
<configuration name="main_pc" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="main_pc" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="WeChatMsg" />
|
<module name="WeChatMsg" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
@ -200,7 +189,7 @@
|
|||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main_pc.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main_pc.py" />
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
<option name="REDIRECT_INPUT" value="false" />
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
@ -227,7 +216,7 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="test (1)" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="WeChatMsg" />
|
<module name="WeChatMsg" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -248,13 +237,34 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="WeChatMsg" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/components" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app/components/test.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.main_pc" />
|
<item itemvalue="Python.main_pc" />
|
||||||
<item itemvalue="Python.test" />
|
<item itemvalue="Python.test (1)" />
|
||||||
<item itemvalue="Python.hard_link" />
|
|
||||||
<item itemvalue="Python.decrypt_window" />
|
<item itemvalue="Python.decrypt_window" />
|
||||||
<item itemvalue="Python.main" />
|
<item itemvalue="Python.test" />
|
||||||
|
<item itemvalue="Python.bubble_message" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
@ -270,13 +280,6 @@
|
|||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1672848140146</updated>
|
<updated>1672848140146</updated>
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00036" summary="重构一些class,删除一些不必要的文件">
|
|
||||||
<created>1698765961025</created>
|
|
||||||
<option name="number" value="00036" />
|
|
||||||
<option name="presentableId" value="LOCAL-00036" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1698765961025</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00037" summary="用stackedWidget实现导航栏">
|
<task id="LOCAL-00037" summary="用stackedWidget实现导航栏">
|
||||||
<created>1698850498765</created>
|
<created>1698850498765</created>
|
||||||
<option name="number" value="00037" />
|
<option name="number" value="00037" />
|
||||||
@ -613,7 +616,14 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1700490633275</updated>
|
<updated>1700490633275</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="85" />
|
<task id="LOCAL-00085" summary="显示聊天图片">
|
||||||
|
<created>1700492891759</created>
|
||||||
|
<option name="number" value="00085" />
|
||||||
|
<option name="presentableId" value="LOCAL-00085" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1700492891759</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="86" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="UnknownFeatures">
|
<component name="UnknownFeatures">
|
||||||
@ -636,7 +646,7 @@
|
|||||||
<entry key="branch">
|
<entry key="branch">
|
||||||
<value>
|
<value>
|
||||||
<list>
|
<list>
|
||||||
<option value="master" />
|
<option value="dev_zsk" />
|
||||||
</list>
|
</list>
|
||||||
</value>
|
</value>
|
||||||
</entry>
|
</entry>
|
||||||
@ -649,7 +659,6 @@
|
|||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<MESSAGE value="删除多余的Word文件" />
|
|
||||||
<MESSAGE value="修复无法查找wxid的bug" />
|
<MESSAGE value="修复无法查找wxid的bug" />
|
||||||
<MESSAGE value="修改UI" />
|
<MESSAGE value="修改UI" />
|
||||||
<MESSAGE value="新增联系人头像组件" />
|
<MESSAGE value="新增联系人头像组件" />
|
||||||
@ -674,7 +683,8 @@
|
|||||||
<MESSAGE value="修复修改wixd的bug" />
|
<MESSAGE value="修复修改wixd的bug" />
|
||||||
<MESSAGE value="文字消息设置圆角" />
|
<MESSAGE value="文字消息设置圆角" />
|
||||||
<MESSAGE value="更新wx选择的路径" />
|
<MESSAGE value="更新wx选择的路径" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="更新wx选择的路径" />
|
<MESSAGE value="显示聊天图片" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="显示聊天图片" />
|
||||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||||
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
|
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
|
||||||
</component>
|
</component>
|
||||||
@ -693,9 +703,24 @@
|
|||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
<url>file://$PROJECT_DIR$/app/decrypt/decrypt.py</url>
|
<url>file://$PROJECT_DIR$/app/decrypt/decrypt.py</url>
|
||||||
<line>103</line>
|
<line>107</line>
|
||||||
<option name="timeStamp" value="9" />
|
<option name="timeStamp" value="9" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
|
<url>file://$PROJECT_DIR$/app/person.py</url>
|
||||||
|
<line>100</line>
|
||||||
|
<option name="timeStamp" value="10" />
|
||||||
|
</line-breakpoint>
|
||||||
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
|
<url>file://$PROJECT_DIR$/app/person.py</url>
|
||||||
|
<line>98</line>
|
||||||
|
<option name="timeStamp" value="11" />
|
||||||
|
</line-breakpoint>
|
||||||
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
|
<url>file://$PROJECT_DIR$/app/person.py</url>
|
||||||
|
<line>99</line>
|
||||||
|
<option name="timeStamp" value="12" />
|
||||||
|
</line-breakpoint>
|
||||||
</breakpoints>
|
</breakpoints>
|
||||||
<default-breakpoints>
|
<default-breakpoints>
|
||||||
<breakpoint type="python-exception">
|
<breakpoint type="python-exception">
|
||||||
|
@ -104,25 +104,35 @@ class OpenImageThread(QThread):
|
|||||||
|
|
||||||
|
|
||||||
class ImageMessage(QLabel):
|
class ImageMessage(QLabel):
|
||||||
def __init__(self, image, image_link='', max_width=480, max_height=720, parent=None):
|
def __init__(self, image, image_link='', max_width=480, max_height=240, parent=None):
|
||||||
"""
|
"""
|
||||||
param:image 图像路径或者QPixmap对象
|
param:image 图像路径或者QPixmap对象
|
||||||
param:image_link='' 点击图像打开的文件路径
|
param:image_link='' 点击图像打开的文件路径
|
||||||
"""
|
"""
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.image = QLabel(self)
|
self.image = QLabel(self)
|
||||||
|
self.max_width = max_width
|
||||||
|
self.max_height = max_height
|
||||||
if isinstance(image, str):
|
if isinstance(image, str):
|
||||||
self.setPixmap(QPixmap(image))
|
pixmap = QPixmap(image)
|
||||||
self.image_path = image
|
self.image_path = image
|
||||||
elif isinstance(image, QPixmap):
|
elif isinstance(image, QPixmap):
|
||||||
self.setPixmap(image)
|
pixmap = image
|
||||||
|
self.set_image(pixmap)
|
||||||
if image_link:
|
if image_link:
|
||||||
self.image_path = image_link
|
self.image_path = image_link
|
||||||
self.setMaximumWidth(max_width)
|
self.setMaximumWidth(self.max_width)
|
||||||
self.setMaximumHeight(max_height)
|
self.setMaximumHeight(self.max_height)
|
||||||
# self.setScaledContents(True)
|
# self.setScaledContents(True)
|
||||||
|
|
||||||
|
def set_image(self, pixmap):
|
||||||
|
# 计算调整后的大小
|
||||||
|
adjusted_width = min(pixmap.width(), self.max_width)
|
||||||
|
adjusted_height = min(pixmap.height(), self.max_height)
|
||||||
|
self.setPixmap(pixmap.scaled(adjusted_width, adjusted_height, Qt.KeepAspectRatio))
|
||||||
|
# 调整QLabel的大小以适应图片的宽高,但不超过最大宽高
|
||||||
|
self.setFixedSize(adjusted_width, adjusted_height)
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
if event.buttons() == Qt.LeftButton: # 左键按下
|
if event.buttons() == Qt.LeftButton: # 左键按下
|
||||||
print('打开图像', self.image_path)
|
print('打开图像', self.image_path)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# 图片字节头信息,
|
# 图片字节头信息,
|
||||||
# [0][1]为jpg头信息,
|
# [0][1]为jpg头信息,
|
||||||
# [2][3]为png头信息,
|
# [2][3]为png头信息,
|
||||||
@ -21,7 +21,7 @@ def get_code(file_path):
|
|||||||
return -1, -1
|
return -1, -1
|
||||||
dat_file = open(file_path, "rb")
|
dat_file = open(file_path, "rb")
|
||||||
dat_read = dat_file.read(2)
|
dat_read = dat_file.read(2)
|
||||||
print(dat_read)
|
# print(dat_read)
|
||||||
head_index = 0
|
head_index = 0
|
||||||
while head_index < len(pic_head):
|
while head_index < len(pic_head):
|
||||||
# 使用第一个头信息字节来计算加密码
|
# 使用第一个头信息字节来计算加密码
|
||||||
@ -33,7 +33,7 @@ def get_code(file_path):
|
|||||||
dat_file.close()
|
dat_file.close()
|
||||||
return head_index, code
|
return head_index, code
|
||||||
head_index = head_index + 1
|
head_index = head_index + 1
|
||||||
|
dat_file.close()
|
||||||
print("not jpg, png, gif")
|
print("not jpg, png, gif")
|
||||||
return -1, -1
|
return -1, -1
|
||||||
|
|
||||||
@ -49,26 +49,22 @@ def decode_dat(file_path, out_path):
|
|||||||
if decode_code == -1:
|
if decode_code == -1:
|
||||||
return
|
return
|
||||||
if file_type == 1:
|
if file_type == 1:
|
||||||
pic_name = file_path.split("\\")[-1][:-4] + ".jpg"
|
pic_name = os.path.basename(file_path)[:-4] + ".jpg"
|
||||||
elif file_type == 3:
|
elif file_type == 3:
|
||||||
pic_name = file_path[:-4] + ".png"
|
pic_name = file_path[:-4] + ".png"
|
||||||
elif file_type == 5:
|
elif file_type == 5:
|
||||||
pic_name = file_path[:-4] + ".gif"
|
pic_name = file_path[:-4] + ".gif"
|
||||||
else:
|
else:
|
||||||
pic_name = file_path[:-4] + ".jpg"
|
pic_name = file_path[:-4] + ".jpg"
|
||||||
|
|
||||||
dat_file = open(file_path, "rb")
|
|
||||||
file_outpath = os.path.join(out_path, pic_name)
|
file_outpath = os.path.join(out_path, pic_name)
|
||||||
print(pic_name)
|
with open(file_path, 'rb') as file_in:
|
||||||
print(file_outpath)
|
data = file_in.read()
|
||||||
pic_write = open(file_outpath, "wb")
|
# 对数据进行异或加密/解密
|
||||||
for dat_data in dat_file:
|
encrypted_data = bytes([byte ^ decode_code for byte in data])
|
||||||
for dat_byte in dat_data:
|
with open(file_outpath, 'wb') as file_out:
|
||||||
pic_data = dat_byte ^ decode_code
|
file_out.write(encrypted_data)
|
||||||
pic_write.write(bytes([pic_data]))
|
print(file_path, '->', file_outpath)
|
||||||
print(pic_name + "完成")
|
return file_outpath
|
||||||
dat_file.close()
|
|
||||||
pic_write.close()
|
|
||||||
|
|
||||||
|
|
||||||
def find_datfile(dir_path, out_path):
|
def find_datfile(dir_path, out_path):
|
||||||
@ -88,4 +84,4 @@ if __name__ == "__main__":
|
|||||||
outpath = "D:\\test"
|
outpath = "D:\\test"
|
||||||
if not os.path.exists(outpath):
|
if not os.path.exists(outpath):
|
||||||
os.mkdir(outpath)
|
os.mkdir(outpath)
|
||||||
find_datfile(path, outpath)
|
find_datfile(path, outpath)
|
||||||
|
@ -72,7 +72,7 @@ class DecryptControl(QWidget, decryptUi.Ui_Dialog):
|
|||||||
|
|
||||||
def select_db_dir(self):
|
def select_db_dir(self):
|
||||||
directory = QtWidgets.QFileDialog.getExistingDirectory(
|
directory = QtWidgets.QFileDialog.getExistingDirectory(
|
||||||
self, "选取微信安装目录——能看到All Users文件夹",
|
self, "选取微信安装目录——能看到Msg文件夹",
|
||||||
"C:/") # 起始路径
|
"C:/") # 起始路径
|
||||||
db_dir = os.path.join(directory, 'Msg')
|
db_dir = os.path.join(directory, 'Msg')
|
||||||
if not os.path.exists(db_dir):
|
if not os.path.exists(db_dir):
|
||||||
|
@ -1,11 +1,17 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
|
from app.decrypt import dat2pic
|
||||||
from app.person import MePC
|
from app.person import MePC
|
||||||
|
|
||||||
|
if not os.path.exists('./data/image'):
|
||||||
|
os.mkdir('./data/image')
|
||||||
|
|
||||||
|
|
||||||
def get_abs_path(path):
|
def get_abs_path(path):
|
||||||
return os.path.join(os.getcwd(), 'app/data/icons/404.png')
|
# return os.path.join(os.getcwd(), 'app/data/icons/404.png')
|
||||||
if path:
|
if path:
|
||||||
return os.path.join(MePC().wx_dir, path)
|
# if os.path.exists(os.path.join())
|
||||||
|
output_path = dat2pic.decode_dat(os.path.join(MePC().wx_dir, path), './data/image')
|
||||||
|
return output_path
|
||||||
else:
|
else:
|
||||||
return os.path.join(os.getcwd(), 'app/data/icons/404.png')
|
return os.path.join(os.getcwd(), 'app/data/icons/404.png')
|
||||||
|
Loading…
Reference in New Issue
Block a user