Prechádzať zdrojové kódy

add `image reduction factor` option
(see #1831, #1435, #1438)

Gildas 2 mesiacov pred
rodič
commit
c5a70ead7e

+ 4 - 0
_locales/az/messages.json

@@ -383,6 +383,10 @@
 		"message": "şəkilləri qruplaşdırın",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "şəkil ölçüsünü azaltma əmsalı",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "gözləyən şəkilləri yükləyin",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/de/messages.json

@@ -383,6 +383,10 @@
 		"message": "Doppelte Bilder zusammenfassen",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "Größenreduktionsfaktor",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "Speicherung zurückgestellter Bilder",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/en/messages.json

@@ -383,6 +383,10 @@
 		"message": "group duplicate images together",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "image reduction factor",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "save deferred images",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/es/messages.json

@@ -383,6 +383,10 @@
 		"message": "agrupar imágenes duplicadas combinadamente",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "factor de reducción del tamaño de la imagen",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "guardar imágenes diferidas",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/fr/messages.json

@@ -383,6 +383,10 @@
 		"message": "regrouper les images dupliquées",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "facteur de réduction des images",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "sauver les images chargées de manière différée",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/it/messages.json

@@ -383,6 +383,10 @@
 		"message": "raggruppa insieme immagini duplicate",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "fattore di riduzione dell'immagine",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "salva immagini differite",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/ja/messages.json

@@ -383,6 +383,10 @@
 		"message": "オプション重複画像のグループ化",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "画像の縮小係数",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "遅延画像を保存する",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/nl_NL/messages.json

@@ -383,6 +383,10 @@
 		"message": "dubbele afbeeldingen samenvoegen",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "factor voor verkleining van afbeeldingen",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "uitgestelde afbeeldingen opslaan",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/pl/messages.json

@@ -383,6 +383,10 @@
 		"message": "grupuj zduplikowane obrazy razem",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "image reduction factor",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "zapisuj odroczone obrazy",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/pt_PT/messages.json

@@ -383,6 +383,10 @@
 		"message": "agrupar imagens duplicadas",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "fator de redução do tamanho da imagem",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "guardar imagens diferidas",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/pt_br/messages.json

@@ -383,6 +383,10 @@
 		"message": "agrupar imagens duplicadas",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "fator de redução do tamanho da imagem",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "salvar imagens diferidas",
 		"description": "Options page label: 'save deferred images'"

+ 5 - 1
_locales/ru/messages.json

@@ -383,6 +383,10 @@
 		"message": "группировать дубликаты изображений",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "image reduction factor",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "сохранить отложенные изображения",
 		"description": "Options page label: 'save deferred images'"
@@ -1119,4 +1123,4 @@
 		"message": "Неправильный JSON",
 		"description": "Options editor error message: 'Invalid JSON'"
 	}
-}
+}

+ 4 - 0
_locales/sv/messages.json

@@ -383,6 +383,10 @@
 		"message": "gruppera dubblettbilder",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "faktor för minskning av bildstorlek",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "spara uppskjutna bilder",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/tr/messages.json

@@ -383,6 +383,10 @@
 		"message": "yinelenen görüntüleri gruplandır",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "görüntü küçültme faktörü",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "ertelenen görüntüleri kaydet",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/uk/messages.json

@@ -383,6 +383,10 @@
 		"message": "групувати дублікати зображень",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "коефіцієнт зменшення розміру зображення",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "зберегти відстрочені зображення",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/zh_CN/messages.json

@@ -383,6 +383,10 @@
 		"message": "将重复图片分组到一起",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "图片缩小系数",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "保存延迟加载的图片",
 		"description": "Options page label: 'save deferred images'"

+ 4 - 0
_locales/zh_TW/messages.json

@@ -383,6 +383,10 @@
 		"message": "將重複圖片分組到一起",
 		"description": "Options page label: 'group duplicate images together'"
 	},
+	"optionImageReductionFactor": {
+		"message": "圖片縮小係數",
+		"description": "Options page label: 'image reduction factor'"
+	},
 	"optionLoadDeferredImages": {
 		"message": "保存延遲加載的圖片",
 		"description": "Options page label: 'save deferred images'"

+ 2 - 1
src/core/bg/config.js

@@ -199,7 +199,8 @@ const DEFAULT_CONFIG = {
 	infobarPositionBottom: "",
 	infobarPositionLeft: "",
 	removeNoScriptTags: true,
-	customShortcut: null
+	customShortcut: null,
+	imageReductionFactor: 1
 };
 
 const DEFAULT_RULES = [{

+ 5 - 0
src/ui/bg/ui-options.js

@@ -113,6 +113,7 @@ const insertEmbeddedScreenshotImageLabel = document.getElementById("insertEmbedd
 const compressCSSLabel = document.getElementById("compressCSSLabel");
 const groupDuplicateStylesheetsLabel = document.getElementById("groupDuplicateStylesheetsLabel");
 const moveStylesInHeadLabel = document.getElementById("moveStylesInHeadLabel");
+const imageReductionFactorLabel = document.getElementById("imageReductionFactorLabel");
 const loadDeferredImagesLabel = document.getElementById("loadDeferredImagesLabel");
 const loadDeferredImagesMaxIdleTimeLabel = document.getElementById("loadDeferredImagesMaxIdleTimeLabel");
 const loadDeferredImagesKeepZoomLevelLabel = document.getElementById("loadDeferredImagesKeepZoomLevelLabel");
@@ -276,6 +277,7 @@ const insertEmbeddedCustomImageInput = document.getElementById("insertEmbeddedCu
 const insertEmbeddedScreenshotImageInput = document.getElementById("insertEmbeddedScreenshotImageInput");
 const compressCSSInput = document.getElementById("compressCSSInput");
 const groupDuplicateStylesheetsInput = document.getElementById("groupDuplicateStylesheetsInput");
+const imageReductionFactorInput = document.getElementById("imageReductionFactorInput");
 const moveStylesInHeadInput = document.getElementById("moveStylesInHeadInput");
 const loadDeferredImagesInput = document.getElementById("loadDeferredImagesInput");
 const loadDeferredImagesMaxIdleTimeInput = document.getElementById("loadDeferredImagesMaxIdleTimeInput");
@@ -735,6 +737,7 @@ insertEmbeddedScreenshotImageLabel.textContent = browser.i18n.getMessage("option
 compressCSSLabel.textContent = browser.i18n.getMessage("optionCompressCSS");
 groupDuplicateStylesheetsLabel.textContent = browser.i18n.getMessage("optionGroupDuplicateStylesheets");
 moveStylesInHeadLabel.textContent = browser.i18n.getMessage("optionMoveStylesInHead");
+imageReductionFactorLabel.textContent = browser.i18n.getMessage("optionImageReductionFactor");
 loadDeferredImagesLabel.textContent = browser.i18n.getMessage("optionLoadDeferredImages");
 loadDeferredImagesMaxIdleTimeLabel.textContent = browser.i18n.getMessage("optionLoadDeferredImagesMaxIdleTime");
 loadDeferredImagesKeepZoomLevelLabel.textContent = browser.i18n.getMessage("optionLoadDeferredImagesKeepZoomLevel");
@@ -1135,6 +1138,7 @@ async function refresh(profileName) {
 	removeAlternativeFontsInput.checked = profileOptions.removeAlternativeFonts;
 	removeAlternativeImagesInput.checked = profileOptions.removeAlternativeImages;
 	groupDuplicateImagesInput.checked = profileOptions.groupDuplicateImages;
+	imageReductionFactorInput.value = profileOptions.imageReductionFactor;
 	customShortcutInput.value = profileOptions.customShortcut || "";
 	removeAlternativeMediasInput.checked = profileOptions.removeAlternativeMedias;
 	saveCreatedBookmarksInput.checked = profileOptions.saveCreatedBookmarks;
@@ -1308,6 +1312,7 @@ async function update() {
 			extractDataFromPage: fileFormatSelectInput.value == "self-extracting-zip-universal",
 			password: passwordInput.value,
 			groupDuplicateImages: groupDuplicateImagesInput.checked,
+			imageReductionFactor: imageReductionFactorInput.value,
 			infobarTemplate: infobarTemplateInput.value,
 			blockMixedContent: blockMixedContentInput.checked,
 			saveOriginalURLs: saveOriginalURLsInput.checked,

+ 10 - 0
src/ui/pages/help.html

@@ -436,6 +436,16 @@
 						</p>
 						<p class="notice">It is recommended to <u>uncheck</u> this option</p>
 					</li>
+					<li data-options-label="imageReductionFactorLabel"> <span class="option">size reduction
+							factor</span>
+						<p>
+							Reduce the size of images embedded in the saved page. The value corresponds to a divisor.
+							For example, if you set this value to 2, the dimensions of the images will be halved; if you
+							set it to 4, they will be quartered, and so on. This only applies to PNG, JPEG, and WEBP
+							images. This can help reduce the final file size, but may also reduce the image quality. The
+							default value is 1 (no reduction).
+						</p>
+					</li>
 					<li data-options-label="removeAlternativeImagesLabel"> <span class="option">Option: remove images
 							for alternative screen resolutions</span>
 						<p>Check this option to remove images that are alternatives in lower and/or higher resolutions

+ 6 - 1
src/ui/pages/help_zh_CN.html

@@ -28,7 +28,7 @@
                     <li>单击SingleFile按钮<img class="icon" src="../resources/icon_16.png">在扩展工具栏中处理和保存页面。</li>
                     <li>处理页面时,您可以再次单击按钮取消操作。</li>
                 </ul>
-            </li>
+                </li>
             <li><a id="general-notes">附加说明</a>
                 <ul>
                     <li>要保存多个选项卡,请先选择它们,然后单击SingleFile按钮<img class="icon" src="../resources/icon_16.png">.</li>
@@ -284,6 +284,11 @@
                         <p>选中此选项可在保存帧内容之前加载延迟帧和图像。这将增加保存页面所需的时间。</p>
                         <p class="notice">建议<u>取消选中</u>此选项</p>
                     </li>
+                    <li data-options-label="imageReductionFactorLabel"> <span class="option">图片缩小系数</span>
+						<p>
+                            缩小嵌入在已保存页面中的图像大小。该值表示一个除数。例如,如果设置为 2,图像尺寸将减半;如果设置为 4,图像尺寸将减为四分之一,依此类推。此选项仅适用于 PNG、JPEG 和 WEBP 图像。可以帮助减小最终文件大小,但也可能降低图像质量。默认值为 1(不缩减)。
+						</p>
+					</li>
                     <li data-options-label="removeAlternativeImagesLabel"><span class="option">选项:删除图像以获得其他屏幕分辨率</span>
                         <p>选中此选项可删除默认显示分辨率较低和/或较高的替代图像。选中此选项可以大大减小文件的大小。</p>
                     </li>

+ 4 - 0
src/ui/pages/options.html

@@ -256,6 +256,10 @@
 				<label for="loadDeferredImagesBeforeFramesInput" id="loadDeferredImagesBeforeFramesLabel"></label>
 				<input type="checkbox" id="loadDeferredImagesBeforeFramesInput">
 			</div>
+			<div class="option">
+				<label for="imageReductionFactorInput" id="imageReductionFactorLabel"></label>
+				<input type="number" id="imageReductionFactorInput" min="1" max="16" step=".5" value="1">
+			</div>
 			<div class="option">
 				<label for="removeAlternativeImagesInput" id="removeAlternativeImagesLabel"></label>
 				<input type="checkbox" id="removeAlternativeImagesInput">