updateImageCompress

This commit is contained in:
2024-08-22 23:13:13 +08:00
parent 9f7286b5da
commit c468188b95
3 changed files with 336 additions and 24 deletions

View File

@ -0,0 +1,134 @@
; <20>ýű<C3BD>ʹ<EFBFBD><CAB9> HM VNISEdit <20>ű<EFBFBD><C5B1><EFBFBD><E0BCAD><EFBFBD>򵼲<EFBFBD><F2B5BCB2><EFBFBD>
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E5B3A3>
!define PRODUCT_NAME "ImageCompress"
!define PRODUCT_VERSION "1.1"
!define PRODUCT_PUBLISHER "52pojie.cn @ flt"
!define PRODUCT_URL "https://www.flt6.top/article/compressImageTool"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\7z.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; ------ MUI <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><E6B6A8> (1.67 <20><EFBFBD><E6B1BE><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>) ------
!include "MUI.nsh"
; MUI Ԥ<><D4A4><EFBFBD><EFBFBD><E5B3A3>
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; <20><>ӭҳ<D3AD><D2B3>
!insertmacro MUI_PAGE_WELCOME
; <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_COMPONENTS
; <20><>װĿ¼ѡ<C2BC><D1A1>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_DIRECTORY
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_INSTFILES
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_FINISH
; <20><>װж<D7B0>ع<EFBFBD><D8B9><EFBFBD>ҳ<EFBFBD><D2B3>
!insertmacro MUI_UNPAGE_INSTFILES
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
!insertmacro MUI_LANGUAGE "SimpChinese"
; <20><>װԤ<D7B0>ͷ<EFBFBD><CDB7>ļ<EFBFBD>
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><E6B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\ImageCompress"
InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
ShowInstDetails show
ShowUnInstDetails show
BrandingText " "
Section "<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "E:\tem\0821\b.dist\*.*"
WriteRegStr HKCR "Directory\Background\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ͼƬ"
WriteRegStr HKCR "Directory\Background\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%V"'
SectionEnd
Section "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD>ʽ" SEC03
WriteRegStr HKCR ".png\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".png\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".jpg\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".jpg\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".gif\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".gif\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".webp\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".webp\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".jpeg\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".jpeg\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
SectionEnd
Section -AdditionalIcons
CreateDirectory "$SMPROGRAMS\ImageCompress"
CreateShortCut "$SMPROGRAMS\ImageCompress\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\7z.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
#-- <20><><EFBFBD><EFBFBD> NSIS <20>ű<EFBFBD><C5B1><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Function <20><><EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Section <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Ա<EFBFBD><D4B1>ⰲװ<E2B0B2><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>Ԥ֪<D4A4><D6AA><EFBFBD><EFBFBD><EFBFBD>⡣--#
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} ""
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>path<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ffmpeg<EFBFBD><EFBFBD><EFBFBD>ѡ"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "<EFBFBD><EFBFBD>ͼƬ<EFBFBD>Ҽ<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jpg, jpeg, gif, webp, png<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>װ"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
/******************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD> *
******************************/
Section Uninstall
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\*.*"
Delete "$SMPROGRAMS\ImageCompress\Uninstall.lnk"
RMDir "$SMPROGRAMS\ImageCompress"
RMDir "$INSTDIR"
Delete "$APPDATA\compressImage\config.txt"
RMDir "$APPDATA\compressImage"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
DeleteRegKey HKCR "Directory\Background\shell\ImageCompress"
DeleteRegKey HKCR "*\shell\ImageCompress"
DeleteRegKey HKCR ".webp\shell\ImageCompress"
DeleteRegKey HKCR ".png\shell\ImageCompress"
DeleteRegKey HKCR ".jpg\shell\ImageCompress"
DeleteRegKey HKCR ".jpeg\shell\ImageCompress"
DeleteRegKey HKCR ".gif\shell\ImageCompress"
SetAutoClose false
SectionEnd
#-- <20><><EFBFBD><EFBFBD> NSIS <20>ű<EFBFBD><C5B1><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Function <20><><EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Section <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Ա<EFBFBD><D4B1>ⰲװ<E2B0B2><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>Ԥ֪<D4A4><D6AA><EFBFBD><EFBFBD><EFBFBD>⡣--#
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "<EFBFBD><EFBFBD>ȷʵҪ<EFBFBD><EFBFBD>ȫ<EFBFBD>Ƴ<EFBFBD> $(^Name) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" IDYES +2
Abort
FunctionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) <20>ѳɹ<D1B3><C9B9>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>"
FunctionEnd

View File

@ -0,0 +1,142 @@
; <20>ýű<C3BD>ʹ<EFBFBD><CAB9> HM VNISEdit <20>ű<EFBFBD><C5B1><EFBFBD><E0BCAD><EFBFBD>򵼲<EFBFBD><F2B5BCB2><EFBFBD>
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E5B3A3>
!define PRODUCT_NAME "ImageCompress"
!define PRODUCT_VERSION "1.1"
!define PRODUCT_PUBLISHER "52pojie.cn @ flt"
!define PRODUCT_URL "https://www.flt6.top/article/compressImageTool"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\7z.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; ------ MUI <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><E6B6A8> (1.67 <20><EFBFBD><E6B1BE><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>) ------
!include "MUI.nsh"
; MUI Ԥ<><D4A4><EFBFBD><EFBFBD><E5B3A3>
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; <20><>ӭҳ<D3AD><D2B3>
!insertmacro MUI_PAGE_WELCOME
; <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_COMPONENTS
; <20><>װĿ¼ѡ<C2BC><D1A1>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_DIRECTORY
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_INSTFILES
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
!insertmacro MUI_PAGE_FINISH
; <20><>װж<D7B0>ع<EFBFBD><D8B9><EFBFBD>ҳ<EFBFBD><D2B3>
!insertmacro MUI_UNPAGE_INSTFILES
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
!insertmacro MUI_LANGUAGE "SimpChinese"
; <20><>װԤ<D7B0>ͷ<EFBFBD><CDB7>ļ<EFBFBD>
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><E6B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\ImageCompress"
InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
ShowInstDetails show
ShowUnInstDetails show
BrandingText " "
Section "<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "E:\tem\0821\b.dist\*.*"
WriteRegStr HKCR "Directory\Background\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ͼƬ"
WriteRegStr HKCR "Directory\Background\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%V"'
WriteRegStr HKCR "*\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR "*\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
SectionEnd
Section "ffmpeg" SEC02
File "E:\tem\0821\compress\ffmpeg-essentials.7z"
File "E:\tem\0821\compress\7z.exe"
File "E:\tem\0821\compress\7z.dll"
ExecWait '"$INSTDIR\7z.exe" e -aoa ffmpeg-essentials.7z ffmpeg-2024-08-18-git-7e5410eadb-essentials_build/bin/ffmpeg.exe'
SectionEnd
Section "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD>ʽ" SEC03
WriteRegStr HKCR ".png\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".png\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".jpg\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".jpg\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".gif\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".gif\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".webp\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".webp\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
WriteRegStr HKCR ".jpeg\shell\ImageCompress" "" "ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ"
WriteRegStr HKCR ".jpeg\shell\ImageCompress\command" "" '"$INSTDIR\b.exe" "%1"'
SectionEnd
Section -AdditionalIcons
CreateDirectory "$SMPROGRAMS\ImageCompress"
CreateShortCut "$SMPROGRAMS\ImageCompress\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\7z.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
Delete "$INSTDIR\7z.exe"
Delete "$INSTDIR\7z.dll"
Delete "$INSTDIR\ffmpeg-essentials.7z"
SectionEnd
#-- <20><><EFBFBD><EFBFBD> NSIS <20>ű<EFBFBD><C5B1><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Function <20><><EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Section <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Ա<EFBFBD><D4B1>ⰲװ<E2B0B2><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>Ԥ֪<D4A4><D6AA><EFBFBD><EFBFBD><EFBFBD>⡣--#
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} ""
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>path<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ffmpeg<EFBFBD><EFBFBD><EFBFBD>ѡ"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "<EFBFBD><EFBFBD>ͼƬ<EFBFBD>Ҽ<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jpg, jpeg, gif, webp, png<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>װ"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
/******************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD> *
******************************/
Section Uninstall
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\*.*"
Delete "$SMPROGRAMS\ImageCompress\Uninstall.lnk"
RMDir "$SMPROGRAMS\ImageCompress"
RMDir "$INSTDIR"
Delete "$APPDATA\compressImage\config.txt"
RMDir "$APPDATA\compressImage"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
DeleteRegKey HKCR "Directory\Background\shell\ImageCompress"
DeleteRegKey HKCR "*\shell\ImageCompress"
SetAutoClose false
SectionEnd
#-- <20><><EFBFBD><EFBFBD> NSIS <20>ű<EFBFBD><C5B1><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Function <20><><EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Section <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Ա<EFBFBD><D4B1>ⰲװ<E2B0B2><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>Ԥ֪<D4A4><D6AA><EFBFBD><EFBFBD><EFBFBD>⡣--#
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "<EFBFBD><EFBFBD>ȷʵҪ<EFBFBD><EFBFBD>ȫ<EFBFBD>Ƴ<EFBFBD> $(^Name) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" IDYES +2
Abort
FunctionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) <20>ѳɹ<D1B3><C9B9>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>"
FunctionEnd

View File

@ -2,37 +2,46 @@ from subprocess import Popen,PIPE
from pathlib import Path from pathlib import Path
from multiprocessing import Pool from multiprocessing import Pool
from sys import argv from sys import argv
from os import environ
SINGLE=False def main(file:Path,targetPath:Path,TARGET_SIZE,MINSIZE,SINGLE):
def main(file:Path,TARGET_SIZE,MINSIZE,compressdir):
if SINGLE:print(f"Process {str(file)}",end="",flush=True) if SINGLE:print(f"Process {str(file)}",end="",flush=True)
else:cnt=0 else:cnt=0
if (compressdir/file.name).exists(): if targetPath.exists():
if SINGLE: if SINGLE:
print(f" file already exists. Check it.") print(f" file already exists. Check it.")
exit() exit()
else: else:
print(f"{compressdir/file.name} file already exists. Check it.") print(f"{targetPath} file already exists. Check it.")
return None return None
with open(file,"rb") as f: inp=file.read_bytes()
inp=f.read()
proc=Popen(f"ffmpeg.exe -hide_banner -i - -vf \"scale=-1:1600:bilinear\" -f mjpeg -",stderr=PIPE,stdout=PIPE,stdin=PIPE) proc=Popen(f"ffmpeg.exe -hide_banner -i - -vf \"scale=-1:1600:bilinear\" -f mjpeg -",stderr=PIPE,stdout=PIPE,stdin=PIPE)
out,_=proc.communicate(inp) out,_=proc.communicate(inp)
suffix=file.suffix[1:]
mapper={
"jpg":"mjpeg",
"jpeg":"mjpeg",
"png":"image2pipe",
"webp":"webp",
"gif":"gif"
}
targetFmt=mapper.get(suffix,"mjpeg")
if SINGLE:print(".",end="",flush=True) if SINGLE:print(".",end="",flush=True)
else:cnt+=1 else:cnt+=1
size=1600 size=1600
delta=abs(len(out)-TARGET_SIZE)//200 delta=abs(len(out)-TARGET_SIZE)//100
while True: while True:
lastDelta=delta lastDelta=delta
delta=abs(len(out)-TARGET_SIZE)//200 delta=abs(len(out)-TARGET_SIZE)//100
if delta>lastDelta: if delta>lastDelta:
delta=lastDelta*3//4 delta=lastDelta*3//4
# print(delta,len(out)//1024,size)
if delta<10: if delta<10:
while len(out)>TARGET_SIZE: while len(out)>TARGET_SIZE:
size-=10 size-=10
proc=Popen(f"ffmpeg.exe -hide_banner -i - -vf \"scale=-1:{str(size)}:bilinear\" -f mjpeg -",stderr=PIPE,stdout=PIPE,stdin=PIPE) proc=Popen(f"ffmpeg.exe -hide_banner -i - -vf \"scale=-1:{str(size)}:bilinear\" -f {targetFmt} -",stderr=PIPE,stdout=PIPE,stdin=PIPE)
out,_=proc.communicate(inp) out,err=proc.communicate(inp)
if SINGLE:print(".",end="",flush=True) if SINGLE:print(".",end="",flush=True)
else:cnt+=1 else:cnt+=1
break break
@ -44,29 +53,56 @@ def main(file:Path,TARGET_SIZE,MINSIZE,compressdir):
size+=delta size+=delta
else: else:
break break
proc=Popen(f"ffmpeg.exe -hide_banner -i - -vf \"scale=-1:{str(size)}:bilinear\" -f mjpeg -",stderr=PIPE,stdout=PIPE,stdin=PIPE) proc=Popen(f"ffmpeg.exe -hide_banner -i - -vf \"scale=-1:{str(size)}:bilinear\" -f {targetFmt} -",stderr=PIPE,stdout=PIPE,stdin=PIPE)
out,_=proc.communicate(inp) out,err=proc.communicate(inp)
if SINGLE:print(".",end="",flush=True) if SINGLE:print(".",end="",flush=True)
else:cnt+=1 else:cnt+=1
with open(compressdir/file.name,"wb") as f: if targetFmt=="webp":
f.write(out) proc=Popen(f"ffmpeg -hide_banner -i - {str(targetPath.resolve())}",stdin=PIPE,stderr=PIPE)
proc.communicate(out)
else:
targetPath.write_bytes(out)
if SINGLE:print(" Success") if SINGLE:print(" Success")
else:return file,cnt else:return file,cnt
if __name__ == "__main__": if __name__ == "__main__":
SINGLE=False
# argv.append("test/types")
if len(argv)!=2: if len(argv)!=2:
print(f"Usage: {__file__} dir") print(f"Usage: {__file__} dir/file")
exit() exit()
TARGET_SIZE=input("Target size(k): ")
MINSIZE=input("The minimum size allowed(k): ")
config=Path(environ.get("APPDATA")+"/compressImage/config.txt")
if TARGET_SIZE=="":
if config.exists():
TARGET_SIZE=config.read_text()
print("Using last target size:",TARGET_SIZE)
else:
while TARGET_SIZE!="":
print("Target size is empty and the application not been used.")
TARGET_SIZE=input("Target size(k): ")
config.parent.mkdir(exist_ok=True)
config.touch(exist_ok=True)
config.write_text(TARGET_SIZE)
TARGET_SIZE=int(TARGET_SIZE)*1024
if MINSIZE=="":
MINSIZE=int(TARGET_SIZE*0.8)
print("Using 80% of the target size:",MINSIZE)
else:MINSIZE=int(MINSIZE)*1024
d=Path(argv[1]).resolve() d=Path(argv[1]).resolve()
if d.is_file():
main(d,d.with_stem(d.stem+"_compress"),TARGET_SIZE,MINSIZE,True)
exit()
files=d.glob("*") files=d.glob("*")
compressdir=(d/"compress") compressdir=(d/"compress")
compressdir.mkdir(exist_ok=True) compressdir.mkdir(exist_ok=True)
TARGET_SIZE=int(input("Target size(k): "))*1024
MINSIZE=int(input("The minimum size allowed(k): "))*1024
# print("Target size:",TARGET_SIZE//1024,"k")
# print("The minimum size allowed:",MINSIZE//1024,"k")
def callback(x): def callback(x):
if x is None: if x is None:
print("Some file exists, please check.") print("Some file exists, please check.")
@ -76,12 +112,12 @@ if __name__ == "__main__":
if SINGLE: if SINGLE:
for file in files: for file in files:
if file.suffix in [".jpg",".png"]: if file.suffix in [".jpg",".png",".webp",".jpeg",".gif",".tif",".tiff",".bmp"]:
main(file,TARGET_SIZE,MINSIZE,compressdir) main(file,compressdir/file.name,TARGET_SIZE,MINSIZE,True)
else: else:
with Pool(16) as p: with Pool(16) as p:
for file in files: for file in files:
if file.suffix in [".jpg",".png"]: if file.suffix in [".jpg",".png",".webp",".jpeg",".gif",".tif",".tiff",".bmp"]:
p.apply_async(main,(file,TARGET_SIZE,MINSIZE,compressdir),callback=callback) p.apply_async(main,(file,compressdir/file.name,TARGET_SIZE,MINSIZE,False),callback=callback)
p.close() p.close()
p.join() p.join()