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

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Существует ли возможность в фотошопе масштабировать выделенную область на весь экран?
Сегодня с удивлением узнал, что, оказывается, столь простое действие не просто не реализовано в интерфейсе, а таки и в API никакого доступа к нему нет (во всяком случае, в топиковой версии)
"Более года назад" некий Влад Данилов грозился запилить скрипт, исправляющий данную досадную оплошность. Однако, время прошло, а скрипта так и нет
Все действительно столь безнадежно? 'hmmm'
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
не, нет возможности. руками зум сделать разве так сложно?
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Таки есть, я мылом с ним списался, буду пробовать.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
расскажи потом, любопытно )
 

Linxy

Девушка с битой
10 лет на форуме
Сообщения
2 277
Реакции
3 836
Миш, не зная конечной цели сложно фантазировать, поэтому моя реплика исключительно для вдохновения.
В более поздних версиях можно выкрутиться с помощью инструмента Crop, кадрируя без удаления по выделенной области, затем ctrl + 0, нужные действия и Reveal All.
 
  • Спасибо
Реакции: _MBK_

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
расскажи потом, любопытно )
Вроде, сказал что через Action Script есть доступ к масштабу и положению ползунков, но у меня как то не получилось сходу. Я думал, он имел в виду свойства документа "zoom" и "center", но у меня они, вроде как read-only, то есть, считать масштаб и положение текущего центра окна просмотра я могу, а вот на модификацию фотошоп ощибку выдает.
Не знаю, может, их не через setd а как то по другому записывать можно? 'hz'
В getterе тоже ничего подобного нет, там zoom устанавливается через resize :(
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
у меня нет идей. но по-моему поставить курсор в центр области, и с alt или без пальцем по мышке провести невелика проблема
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Ну мне оно, в принципе, особо и не критично, просто интересно - каким образом такое сделано? А как еще кроме setd можно устанавливать?
Это кстати, не единственные свойства,которые в документе устанавливать нельзя
К примеру, сделал проверку читаю пропертость и его же записываю обратно, так вот fileInfo перезаписывается нормально, а clippingPathInfo, workflow, measurementScale и center ошибку генерируют при записи через setd :(
 

chesen

15 лет на форуме
Сообщения
552
Реакции
49
Я приспособил макрос в Comfort Keys – это менеджер быстрых клавиш, записываю контрол-плюс сколько надо и вызываю макрос через альт-пробел. Быстро и удобно.
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Вот так, вроде, работает, но, конечно, реализация ужасно заднепроходна
Тестируем
Код:
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;
}
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Да на реальном документе уснешь пока кроп этот сделается ради зума. Быстрее ж руками увеличить
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
немного не в тему, но... :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
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Видимо, для индийского уха эти два слова звучат одинаково '))'
реальном документе уснешь пока кроп этот сделается ради зума
Это если на увеличение кроп делать
Можно в принципе слегка переделать код так, чтобы всегда на уменьшение обрезка работала, тогда тормозить не будет
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
на самом деле кстати это не индийское ухо. это у них Green где-то переписалось поверх Grain от фильтра или еще чего
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Обнаружил странную багофичу - на одном из 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
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
я бы версию проверил, может обновления не установлены