[CS3 и ранее] Выделение на весь экран

Тема в разделе "Adobe Photoshop", создана пользователем _MBK_, 10 май 2017.

  1. Существует ли возможность в фотошопе масштабировать выделенную область на весь экран?
    Сегодня с удивлением узнал, что, оказывается, столь простое действие не просто не реализовано в интерфейсе, а таки и в API никакого доступа к нему нет (во всяком случае, в топиковой версии)
    "Более года назад" некий Влад Данилов грозился запилить скрипт, исправляющий данную досадную оплошность. Однако, время прошло, а скрипта так и нет
    Все действительно столь безнадежно? 'hmmm'
     
  2. ctrl + T ?
     
  3. не, нет возможности. руками зум сделать разве так сложно?
     
  4. Таки есть, я мылом с ним списался, буду пробовать.
     
  5. расскажи потом, любопытно )
     
  6. Миш, не зная конечной цели сложно фантазировать, поэтому моя реплика исключительно для вдохновения.
    В более поздних версиях можно выкрутиться с помощью инструмента Crop, кадрируя без удаления по выделенной области, затем ctrl + 0, нужные действия и Reveal All.
     
    • Одобряю Одобряю x 1
  7. Вроде, сказал что через Action Script есть доступ к масштабу и положению ползунков, но у меня как то не получилось сходу. Я думал, он имел в виду свойства документа "zoom" и "center", но у меня они, вроде как read-only, то есть, считать масштаб и положение текущего центра окна просмотра я могу, а вот на модификацию фотошоп ощибку выдает.
    Не знаю, может, их не через setd а как то по другому записывать можно? 'hz'
    В getterе тоже ничего подобного нет, там zoom устанавливается через resize :(
     
  8. у меня нет идей. но по-моему поставить курсор в центр области, и с alt или без пальцем по мышке провести невелика проблема
     
  9. Ну мне оно, в принципе, особо и не критично, просто интересно - каким образом такое сделано? А как еще кроме setd можно устанавливать?
    Это кстати, не единственные свойства,которые в документе устанавливать нельзя
    К примеру, сделал проверку читаю пропертость и его же записываю обратно, так вот fileInfo перезаписывается нормально, а clippingPathInfo, workflow, measurementScale и center ошибку генерируют при записи через setd :(
     
  10. Я приспособил макрос в Comfort Keys – это менеджер быстрых клавиш, записываю контрол-плюс сколько надо и вызываю макрос через альт-пробел. Быстро и удобно.
     
  11. Вот так, вроде, работает, но, конечно, реализация ужасно заднепроходна
    Тестируем
    Код:
    function setZoom( zoom ) {
       cTID = function(s) { return app.charIDToTypeID(s); };
       var docRes = activeDocument.resolution;
       activeDocument.resizeImage( undefined, undefined, 72/(zoom), ResampleMethod.NONE );
       var desc = new ActionDescriptor();
       var ref = new ActionReference();
       ref.putEnumerated( cTID( "Mn  " ), cTID( "MnIt" ), cTID( 'PrnS' ) );
       desc.putReference( cTID( "null" ), ref );
       executeAction( cTID( "slct" ), desc, DialogModes.NO );
       activeDocument.resizeImage( undefined, undefined, docRes, ResampleMethod.NONE );
    }
    
    function getZoom()
    {
      var ref = new ActionReference();
      ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
      var desc = executeActionGet(ref);
      return desc.getDouble(stringIDToTypeID("zoom"));  
    }
    
    
    function getBounds(doc,x,y)
    {
    
        var deltaX=x-doc.width/2;
        var deltaY=y-doc.height/2;
        var leftX=0;
        var rightX=doc.width+2*deltaX;
        var upY=0;
        var bottomY=doc.height+2*deltaY;  
    
    
        return [leftX,upY,rightX,bottomY];
    }
    
    function fitImage(cmd)
    {
      var desc = new ActionDescriptor();
      var ref = new ActionReference();
      ref.putEnumerated(charIDToTypeID("Mn  "), charIDToTypeID("MnIt"),     charIDToTypeID(cmd));
      desc.putReference(charIDToTypeID("null"), ref);
      executeAction(stringIDToTypeID("select"), desc, DialogModes.ALL);
    }
    
    var bnd=null;
    try
    {
     var doc=activeDocument;
     bnd=doc.selection.bounds;
    } catch (err)
    {
        alert("Please, open document and make selection!");
       
    }
    if (bnd)
    {
    var newX=(bnd[2]+bnd[0])/2;
    var newY=(bnd[3]+bnd[1])/2;
    var bnd1=getBounds(doc,newX,newY)
    
    var st = doc.activeHistoryState;
    
    var id245 = charIDToTypeID( "Crop" );
    var desc43 = new ActionDescriptor();
    executeAction( id245, desc43, DialogModes.NO );
    
    fitImage("FtOn");
    
    var zm=getZoom();
    doc.crop(bnd1);
    
    fitImage("ActP");
    setZoom( zm );
    doc.activeHistoryState=st;
    }
    
     
  12. Да на реальном документе уснешь пока кроп этот сделается ради зума. Быстрее ж руками увеличить
     
  13. немного не в тему, но... :D

    Код:
    Key 17 = color: DescValueType.OBJECTTYPE
    [ActionDescriptor]:_:RGBColor_Key 0 = red: DescValueType.DOUBLETYPE
    255
    Key 1 = grain: DescValueType.DOUBLETYPE
    255
    Key 2 = blue: DescValueType.DOUBLETYPE
    255
     
  14. Видимо, для индийского уха эти два слова звучат одинаково '))'
    Это если на увеличение кроп делать
    Можно в принципе слегка переделать код так, чтобы всегда на уменьшение обрезка работала, тогда тормозить не будет
     
  15. на самом деле кстати это не индийское ухо. это у них Green где-то переписалось поверх Grain от фильтра или еще чего
     

Поделиться этой страницей

   Рейтинг@Mail.ru