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

  • Автор темы Автор темы _MBK_
  • Дата начала Дата начала

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 703
Реакции
11 005
Существует ли возможность в фотошопе масштабировать выделенную область на весь экран?
Сегодня с удивлением узнал, что, оказывается, столь простое действие не просто не реализовано в интерфейсе, а таки и в API никакого доступа к нему нет (во всяком случае, в топиковой версии)
"Более года назад" некий Влад Данилов грозился запилить скрипт, исправляющий данную досадную оплошность. Однако, время прошло, а скрипта так и нет
Все действительно столь безнадежно? 'hmmm'
 
не, нет возможности. руками зум сделать разве так сложно?
 
Таки есть, я мылом с ним списался, буду пробовать.
 
расскажи потом, любопытно )
 
Миш, не зная конечной цели сложно фантазировать, поэтому моя реплика исключительно для вдохновения.
В более поздних версиях можно выкрутиться с помощью инструмента Crop, кадрируя без удаления по выделенной области, затем ctrl + 0, нужные действия и Reveal All.
 
  • Спасибо
Реакции: _MBK_
расскажи потом, любопытно )
Вроде, сказал что через Action Script есть доступ к масштабу и положению ползунков, но у меня как то не получилось сходу. Я думал, он имел в виду свойства документа "zoom" и "center", но у меня они, вроде как read-only, то есть, считать масштаб и положение текущего центра окна просмотра я могу, а вот на модификацию фотошоп ощибку выдает.
Не знаю, может, их не через setd а как то по другому записывать можно? 'hz'
В getterе тоже ничего подобного нет, там zoom устанавливается через resize :(
 
у меня нет идей. но по-моему поставить курсор в центр области, и с alt или без пальцем по мышке провести невелика проблема
 
Ну мне оно, в принципе, особо и не критично, просто интересно - каким образом такое сделано? А как еще кроме setd можно устанавливать?
Это кстати, не единственные свойства,которые в документе устанавливать нельзя
К примеру, сделал проверку читаю пропертость и его же записываю обратно, так вот fileInfo перезаписывается нормально, а clippingPathInfo, workflow, measurementScale и center ошибку генерируют при записи через setd :(
 
Я приспособил макрос в Comfort Keys – это менеджер быстрых клавиш, записываю контрол-плюс сколько надо и вызываю макрос через альт-пробел. Быстро и удобно.
 
Вот так, вроде, работает, но, конечно, реализация ужасно заднепроходна
Тестируем
Код:
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;
}
 
Да на реальном документе уснешь пока кроп этот сделается ради зума. Быстрее ж руками увеличить
 
немного не в тему, но... :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
 
Видимо, для индийского уха эти два слова звучат одинаково '))'
реальном документе уснешь пока кроп этот сделается ради зума
Это если на увеличение кроп делать
Можно в принципе слегка переделать код так, чтобы всегда на уменьшение обрезка работала, тогда тормозить не будет
 
на самом деле кстати это не индийское ухо. это у них Green где-то переписалось поверх Grain от фильтра или еще чего
 
Обнаружил странную багофичу - на одном из CS6 пункт меню Fit to Print Size отсутствует напрочь, вместо него 200%
upload_2017-6-11_12-42-59.png

Команда называется "view200Percent" в документации нигде не встречалась
Соответственно, команда
Код:
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 );
выдает ошибку. Чтоза? %8
 
Последнее редактирование:
я бы версию проверил, может обновления не установлены