阅读:1800回复:5
有没有把一侧所有 tab 中的图片另存为的扩展件?
有没有这样的扩展件:把一侧,所有左侧或右侧所打开的 tab ,每个 tab 都只有一张图片,把这些图片全都另存为一个地方。或者有没有这样的操作技巧?
|
|
1楼#
发布于:2014-11-21 10:50
你的需求可以分为两个:对某标签页左侧或右侧标签页进行操作,将某一个标签页所有图片保存到指定目录,前者印象中只看到标签类扩展可以做到,比如TMP,后者类似save images保存图片,两个结合起来的扩展我没啥印象。
|
|
|
2楼#
发布于:2014-11-21 12:33
fang5566:你的需求可以分为两个:对某标签页左侧或右侧标签页进行操作,将某一个标签页所有图片保存到指定目录,前者印象中只看到标签类扩展可以做到,比如TMP,后者类似save images保存图片,两个结合起来的扩展我没啥印象。回到原帖你可以尝试帮楼主该一下这个 page({ label: "保存所有图片到 zip", oncommand: function() { // 保存ディレクトリのパスがない场合は毎回ダイアログで决める //var path = "C:\\Users\\azu\\Downloads"; // エスケープしたディレクトリのパス var path = ""; if (!path) { // ファイル保存ダイアログ var nsIFilePicker = Ci.nsIFilePicker; var FP = Cc['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); FP.init(window, 'Choose save folder.', nsIFilePicker.modeGetFolder); // ダイアログ表示 if (FP.show() == nsIFilePicker.returnOK) { path = FP.file.path; } else { return false; } } // ダウンロードしたページを表示するために URI オブジェクト生成 var hostURL = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService).newURI(location.href, null, null); // ページに贴り付けられた画像を保存する var links = content.document.images; var pack = []; for (var i = 0, length = links.length; i < length; i++) { // JPEG と PNG を保存する if (links[i].src.match(/\.jpe?g|\.png|img\.blogs\.yahoo(.*)folder[^thumb]/i)) { pack.push([links[i].src.split("/").pop(), links[i].src]); } } zipDeKure(pack, path); function zipDeKure(urls, savePath) { const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); const zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter"); var uri = content.window.location.href; var fileName = uri.substring(uri.lastIndexOf('://') + 3, uri.length); fileName = fileName.split(".").join("_"); fileName = fileName.split("/").join("_"); fileName = fileName.split("?").join("_"); var path = savePath + "\\" + fileName + ".zip"; var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath(path); var zipW = new zipWriter(); var ioFlag = 0x04 | 0x08 | 0x20; zipW.open(file, ioFlag); for (var i = 0, len = urls.length; i < len; i++) { var [name, url] = urls[i]; var ch = ioService.newChannel(url, "UTF-8", null); var stream = ch.open(); zipW.addEntryStream(name, Date.now() * 1000, Ci.nsIZipWriter.COMPRESS_DEFAULT, stream, false); } zipW.close(); } }, image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABBElEQVQ4jdWSsWqEQBBAbcRKC4VlBf8gfUr/w1oQBLuABNlUNkE2LCJqJQe6CZFUqXIfkINwCP6B2ITbI22uCCkmnVwCB9pdHrxqmMcUI0lnAef8uWmazVw55xvGWDEF6rreO44DS6yqajsFsizb2bYNS2SMvU2BMAzfZVkGVVVB13VACAHGGEzTBNM0AWMMCCEwDAM0TQNFUSCKotdfAUmSYIlnFnhZrz/SNP3MsmyWRVEc2rbdHl1wnSRJsqKUTpZl+dT3/b7rul2e54/HM0rpyvO8q5OPFcdxMY7jtxAChBAwDMNXEAQ3Jxf+YlnWpe/7d4SQB0LIveu6txjji9mB/8UPojsDPwcvqoEAAAAASUVORK5CYII=" }); |
|
3楼#
发布于:2014-11-21 14:16
|
|
4楼#
发布于:2014-11-21 14:56
downthemall
|
|
5楼#
发布于:2014-11-22 16:06
这个问题的主要难度是,你看起来“每个tab只有一张图片”,但实际上页面的结构却相当不规整,但是提取出图片这一步就需要专门的扩展
第二步是对每个标签进行同样的批量操作,目前我似乎没有看见具有类似功能的扩展 所以我的建议是,要么退而其次,使用image picker类似物,人工对每个标签进行操作;如果需要操作的tab非常多,那么就针对图片提取的逻辑写个脚本自行提取 |
|
|