[ID CC-CC2021] Как загнать картинку в размер фрейма?

hulk1776

Топикстартер
15 лет на форуме
Сообщения
725
Реакции
21
Ставлю картинку так:
Код:
NNewPath = prompt("Имя файла...");
var mSel = app.selection[0];
var myPic = mSel.place(File(NNewPath));
myPic[0].fit(FitOptions.contentToFrame)
myPic[0].fit(FitOptions.centerContent)
myPic[0].fit(FitOptions.proportionally);
Потом руками дотягиваю (масштабируя) картинку, чтобы закрыть белые поля слева-справа. Можно ли это сделать скриптом? Или есть какой-то хитрый параметр в методе fit?
 

Вложения

  • Clipboard01.jpg
    Clipboard01.jpg
    44.9 КБ · Просм.: 173

_MBK_

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

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Сразу вопрос: получать путь к файлу через prompt - это такой метод наказания пользователя?
FitOptions.FILL_PROPORTIONALLY спасёт.
 
  • Спасибо
Реакции: bossrus

Skvoznyak

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

Код:
    var cont = app.selection[0];
    var pic = cont.allGraphics[0];

    var higCont = cont.geometricBounds[2] - cont.geometricBounds[0];
    var widCont = cont.geometricBounds[3] - cont.geometricBounds[1];

    var higPic = ((pic.geometricBounds[2] - pic.geometricBounds[0]) / pic.horizontalScale) * 100;
    var widPic = ((pic.geometricBounds[3] - pic.geometricBounds[1]) / pic.verticalScale) * 100;

    var percHig = (higCont) / (higPic / 100);
    var percWid = (widCont) / (widPic / 100);

    if (percHig < percWid) {
        var zoom = percWid;
    } else {
        var zoom = percHig;
    }

    pic.horizontalScale = zoom;
    pic.verticalScale = zoom;

вам за код построчно платят? )
 
  • Спасибо
Реакции: hulk1776 и bossrus

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
if(a<b) ... можно заменить сразу на с = Math.min(a,b);
Ну мы вроде ж обсуждали это, вовсе не факт, что вызов метода сторонней библиотеки быстрее прямого сравнения-присвоения. Про условный оператор не знаю, а вот конструкция c=((a<b)?b:a) вполне конкурентоспособна
 
  • Спасибо
Реакции: bossrus

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
угу, а модуль ты так пишешь? )
if(a<0) a=-a;

и Math это не библиотека
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
и Math это не библиотека
А как оно по твоему реализовано? Скорее всего именно на javascript
И даже по псевдокоду конструкция соизмеримая получается для разборки интерпретатором
 

Skvoznyak

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

а вот ternary оператор наоборот рекомендуется не использовать, так как он больше запутывает. в твоем примере например максимум вместо минимума, а поди заметь
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Что и требовалось доказать
1618567167335.png
 
  • Спасибо
Реакции: ~RA~

hulk1776

Топикстартер
15 лет на форуме
Сообщения
725
Реакции
21
Сразу вопрос: получать путь к файлу через prompt - это такой метод наказания пользователя?
FitOptions.FILL_PROPORTIONALLY спасёт.
Я в это окошко вставляю путь, скопированный из Тотала Коммандера по Hotkey's (cm_CopyFullNamesToClip).
За FILL_PROPORTIONALLY большое спасибо (не доглядел в свое время все опции))))).
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я в это окошко вставляю путь, скопированный из Тотала Коммандера по Hotkey's (cm_CopyFullNamesToClip).
А что мешает вместо такой страшной жути использовать простой и удобный openDlg например?
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
725
Реакции
21
А что мешает вместо такой страшной жути использовать простой и удобный openDlg например?
У меня в коммандере открыта директория с картинками. Я ставлю курсор на нужную картинку, копирую путь (быстрой клавой) и в prompt'e нажимаю Ctrl-V и Enter. А openDlg откроет окно с кучей файлов и надо колесиком крутить, искать и щелкать два раза. Не говоря о том, что картинки лучше помещать в нужное место, что бы в диалоговом окне не пришлось бы скакать по директориям. Короче говоря большое мороки (а сроки поджимают))).
 

_MBK_

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

hulk1776

Топикстартер
15 лет на форуме
Сообщения
725
Реакции
21
Так тогда по моему вообще удобнее список файлов в тотале в отдельный текстовый файл скинуть из которого скриптом читать
У меня нет четкого сопоставления текста подписи и имени файла для картинки (имя автора и его фото, которое названо как угодно). Не будет понятно, что за картинка под каждым именем файла. А в Тотале по Ctrl-Q посмотрел (оно? оно.), скопировал путь и потом Ctrl-V.