Xpoint
   [напомнить пароль]

Уменьшение скриншота

Метки: [без меток]
2009-01-13 12:33:08 [обр] Winner[досье]
Здравствуйте уважаемые.
Пожалуйста, помогите! Очень нужно! Есть яваскрипт, который делает скриншот браузера (Firefox 3.0.5). Подскажите чего и куда надо дописать, чтобы скриншот сохранялся в уменьшенном размере. Заранее благодарен.
спустя 22 минуты [обр] MiRacLe(0/77)[досье]
12
спустя 26 минут [обр] Алексей Севрюков(2/1280)[досье]
Не, 15, однозначно. Полная клиника короче... Новое поколение выбирает пепси.
спустя 39 минут [обр] Winner[досье]
Куда все люди подевались? Люди добрые помогите решить проблему.
спустя 34 минуты [обр] Алексей Севрюков(2/1280)[досье]
Winner[досье] какая у Вас проблема?
спустя 11 минут [обр] Winner[досье]
Есть яваскрипт, который делает скриншот (картинку) браузера (Firefox 3.0.5). Эта картинка сохраняется в натуральном размере (1024х768). Надо, что бы она сохранялась в уменьшенном размере, например 200х150.
спустя 19 минут [обр] MiRacLe(0/77)[досье]
Ну ладно, если никто не хочет помочь, я пожалуй отвечу - в двенадцатой строке замените NaturalSize на Thumbnail.
спустя 34 минуты [обр] Winner[досье]
Благодарю, 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
спустя 15 минут [обр] Алексей Севрюков(2/1280)[досье]

Winner[досье] Вы упорно не понимаете намеков. Поймите правильно, мы бы и рады помочь. Но не можем этого сделать, т.к. не знаем вообще ничего ни о Вашем скрипте, ни о том, как Вы получаете картинку, ни о том, куда и как Вы ее сохраняете.

Понимаете к чему я клоню?

спустя 37 минут [обр] 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);
   }
}
спустя 7 часов [обр] LomziK[досье]
Powered by POEM™ Engine Copyright © 2002-2005