|
阅读:2176回复: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非常多,那么就针对图片提取的逻辑写个脚本自行提取 |
|
|