Уменьшение скриншота
Метки: [без меток]
Здравствуйте уважаемые.
Пожалуйста, помогите! Очень нужно! Есть яваскрипт, который делает скриншот браузера (Firefox 3.0.5). Подскажите чего и куда надо дописать, чтобы скриншот сохранялся в уменьшенном размере. Заранее благодарен.
Пожалуйста, помогите! Очень нужно! Есть яваскрипт, который делает скриншот браузера (Firefox 3.0.5). Подскажите чего и куда надо дописать, чтобы скриншот сохранялся в уменьшенном размере. Заранее благодарен.
Не, 15, однозначно. Полная клиника короче... Новое поколение выбирает пепси.
Есть яваскрипт, который делает скриншот (картинку) браузера (Firefox 3.0.5). Эта картинка сохраняется в натуральном размере (1024х768). Надо, что бы она сохранялась в уменьшенном размере, например 200х150.
Ну ладно, если никто не хочет помочь, я пожалуй отвечу - в двенадцатой строке замените NaturalSize на Thumbnail.
Благодарю, MiRacLe!
..."не хочет помочь..." думаю здесь необходимо добавить "или не знает как".
Кстати, что за аддон где "в двенадцатой строке замените NaturalSize на Thumbnail". В скрипте, который имеется в наличии у меня нет значения NaturalSize. Вот компоненты которые там есть:
@mozilla.org/consoleservice;1
@mozilla.org/preferences-service;1
@mozilla.org/network/io-service;1
@mozilla.org/network/file-output-stream;1
@mozilla.org/network/file-input-stream;1
@mozilla.org/scriptableinputstream;1
@mozilla.org/binaryinputstream;1
@mozilla.org/filepicker;1
@mozilla.org/file/local;1
..."не хочет помочь..." думаю здесь необходимо добавить "или не знает как".
Кстати, что за аддон где "в двенадцатой строке замените NaturalSize на Thumbnail". В скрипте, который имеется в наличии у меня нет значения NaturalSize. Вот компоненты которые там есть:
@mozilla.org/consoleservice;1
@mozilla.org/preferences-service;1
@mozilla.org/network/io-service;1
@mozilla.org/network/file-output-stream;1
@mozilla.org/network/file-input-stream;1
@mozilla.org/scriptableinputstream;1
@mozilla.org/binaryinputstream;1
@mozilla.org/filepicker;1
@mozilla.org/file/local;1
Winner[досье] Вы упорно не понимаете намеков. Поймите правильно, мы бы и рады помочь. Но не можем этого сделать, т.к. не знаем вообще ничего ни о Вашем скрипте, ни о том, как Вы получаете картинку, ни о том, куда и как Вы ее сохраняете.
Понимаете к чему я клоню?
сообщение промодерировано
Сорри, Алексей Севрюков. Не предполагал, что у КСУЛа масса способов как получить и сохранить скрин. Как я понял, все делается с помощью компонент которые я указал, возле которых и должна бы была быть настройка. ... или я чего-то не правильно понял? Вот файлы с классами и скриптом непосредственно скрининга:
/*
* classes
*/
GrabThemAll_Utils = {
dump : function(message) {
if (GrabThemAll_Utils.getPref('debug')) {
var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage(message);
}
},
getPref : function(name) {
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch('extensions.grabthemall.');
return prefs.getIntPref(name);
},
saveScreenToFile : function(nsIDir, fileBaseName, dataUrl, format) {
var filePath = nsIDir.path;
if (filePath.search(/\\/) != -1) {
filePath += '\\';
} else {
filePath += '/';
}
filePath += fileBaseName + '.' + format;
var nsFile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
nsFile.initWithPath(filePath);
if (!nsFile.exists()) {
nsFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420);
} else {
return;
}
if (nsFile != null) {
var binaryInputStream = GrabThemAll_Utils.dataUrlToBinaryInputStream(dataUrl);
var fileOutputStream = GrabThemAll_Utils.newFileOutputStream(nsFile);
GrabThemAll_Utils.writeBinaryInputStreamToFileOutputStream(binaryInputStream, fileOutputStream);
fileOutputStream.close();
}
},
fileExists : function(nsIDir, fileName) {
var filePath = nsIDir.path;
if (filePath.search(/\\/) != -1) {
filePath += '\\';
} else {
filePath += '/';
}
filePath += fileName;
var nsFile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
nsFile.initWithPath(filePath);
return nsFile.exists();
},
saveTxtToFile : function(nsIDir, fileName, dataTxt) {
var filePath = nsIDir.path;
if (filePath.search(/\\/) != -1) {
filePath += '\\';
} else {
filePath += '/';
}
filePath += fileName;
var nsFile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
nsFile.initWithPath(filePath);
if (!nsFile.exists()) {
nsFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420);
}
if (nsFile != null) {
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
.createInstance(Components.interfaces.nsIFileOutputStream);
// use 0x02 | 0x10 to open file for appending.
foStream.init(nsFile, 0x02 | 0x08 | 0x20, 0666, 0);
// write, create, truncate
// In a c file operation, we have no need to set file mode with or operation,
// directly using "r" or "w" usually.
foStream.write(dataTxt, dataTxt.length);
foStream.close();
}
},
isUrl : function(url) {
if (!url) {
return false;
}
var regUrl = /^http[s]?:\/\//i;
return regUrl.test(url);
},
dataUrlToBinaryInputStream : function(dataUrl) {
var nsIoService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var channel = nsIoService.newChannelFromURI(nsIoService.newURI(dataUrl, null, null));
var binaryInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
binaryInputStream.setInputStream(channel.open());
return binaryInputStream;
},
newFileOutputStream : function(nsFile) {
var writeFlag = 0x02;
var createFlag = 0x08;
var truncateFlag = 0x20;
var fileOutputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
fileOutputStream.init(nsFile, writeFlag | createFlag | truncateFlag, 0664, null);
return fileOutputStream;
},
writeBinaryInputStreamToFileOutputStream : function(binaryInputStream, fileOutputStream) {
var numBytes = binaryInputStream.available();
var bytes = binaryInputStream.readBytes(numBytes);
fileOutputStream.write(bytes, numBytes);
},
prepareContext : function(canvas, box) {
var context = canvas.getContext('2d');
context.clearRect(box.getX(), box.getY(), box.getWidth(), box.getHeight());
context.save();
return context;
},
prepareCanvas : function(width, height) {
var styleWidth = width + 'px';
var styleHeight = height + 'px';
var grabCanvas = document.getElementById('grabthemall_buffer_canvas');
grabCanvas.width = width;
grabCanvas.style.width = styleWidth;
grabCanvas.style.maxWidth = styleWidth;
grabCanvas.height = height;
grabCanvas.style.height = styleHeight;
grabCanvas.style.maxHeight = styleHeight;
return grabCanvas;
},
hash : function(string) {
return window.btoa(string);
},
screenFileName : function(pageUrl) {
return pageUrl.replace(/^http:\/\//, '').replace(/\./g, '_').replace(/\//g, '--');
}
/*
* screening
*/
var GrabThemAll_ScreenShot = {
doSS : function(windowToShot, dir, fileBaseName) {
this.dir = dir;
this.fileBaseName = fileBaseName;
this.windowToShot = windowToShot;
if (GrabThemAll_Utils.getPref('completepage') > 0) {
this.grabCompletePage();
} else {
this.grabWindow();
}
},
grabWindow : function() {
var browserDim = new GrabThemAll_Dimensions.BrowserWindowDimensions();
var box = new GrabThemAll_Dimensions.Box(0, 0, browserDim.getWidth(),
browserDim.getHeightIgnoringExternalities());
this.grab(this.windowToShot, box);
},
grabCompletePage : function() {
var frameDim = new GrabThemAll_Dimensions.FrameDimensions();
var width = frameDim.getDocumentWidth();
var height = frameDim.getDocumentHeight();
if (frameDim.getFrameWidth() > width) {
width = frameDim.getFrameWidth();
}
if (frameDim.getFrameHeight() > height) {
height = frameDim.getFrameHeight();
}
var box = new GrabThemAll_Dimensions.Box(0, 0, width, height);
this.grab(frameDim.getWindow(), box);
},
grab : function(windowToGrab, box) {
var format = GrabThemAll_Utils.getPref('filetype') == 0
? 'jpeg'
: 'png';
var canvas = GrabThemAll_Utils.prepareCanvas(box.getWidth(), box
.getHeight());
var context = GrabThemAll_Utils.prepareContext(canvas, box);
context.drawWindow(windowToGrab, box.getX(), box.getY(),
box.getWidth(), box.getHeight(), 'rgb(0,0,0)');
context.restore();
var dataUrl = canvas.toDataURL('image/' + format);
GrabThemAll_Utils.saveScreenToFile(this.dir, this.fileBaseName,
dataUrl, format);
}
}
может тут поможет что http://weblogs.mozillazine.org......s/2005/05/rendering_web_p.html
![[logo]](/site/images/logo.jpg)