91
Цифровая обработка изображений / Re: Искусный интеллект
« Последний ответ от design 11 Декабрь 2025, 00:21:29 »Да-да. Никаких пробников категоричски. Только сразу готовые фото. не хотите - не записываетесь )
Дальше будет ещё больше.ну в общем "шустрые" мамочки уже просекли фишечку новых возможностей ИИ, скорее всего вы всё это уже увидели в группах в телеграмме, прошу прощения, ссылки на ролики могу только с Ядиска.
#target photoshop
const SD_Output = ['d:/Downloads'],
EXTENSIONS = ['png', 'jpg', 'jpeg'],
LAYER_NAME = "Generated image",
REMOVE_FILE = true;
var doc = new AM('document'),
lr = new AM('layer'),
apl = new AM('application'),
ch = new AM('channel'),
s2t = stringIDToTypeID,
t2s = typeIDToStringID;
if (apl.getProperty('numberOfDocuments')) activeDocument.suspendHistory('Paste generated image', 'main()')
function main() {
if (doc.hasProperty('selection')) {
var pth = browseFolder(SD_Output);
if (pth.length) {
pth.sort(function (x, y) {
return x.time < y.time ? 1 : -1
});
var bounds = doc.descToObject(doc.getProperty('selection').value);
try {
doc.place(pth[0].file)
var placedBounds = doc.descToObject(lr.getProperty('bounds').value);
var dW = (bounds.right - bounds.left) / (placedBounds.right - placedBounds.left);
var dH = (bounds.bottom - bounds.top) / (placedBounds.bottom - placedBounds.top)
lr.transform(dW * 100, dH * 100);
lr.rasterize();
lr.setName(LAYER_NAME)
if (REMOVE_FILE) pth[0].file.remove();
} catch (e) { }
}
}
}
function findAllFiles(srcFolder, fileObj, useSubfolders) {
if (!srcFolder) return
var fileFolderArray = Folder(srcFolder).getFiles(),
subfolderArray = [];
for (var i = 0; i < fileFolderArray.length; i++) {
var fileFoldObj = fileFolderArray[i];
if (fileFoldObj instanceof File) {
if (!fileFoldObj.hidden && isOneOfThese(fileFoldObj.name)) fileObj.push(
{
file: fileFoldObj,
time: fileFoldObj.created.getTime()
}
)
} else if (useSubfolders) {
subfolderArray.push(fileFoldObj)
}
}
if (useSubfolders) {
for (var i = 0; i < subfolderArray.length; i++) findAllFiles(subfolderArray[i], fileObj, useSubfolders)
}
}
function isOneOfThese(s) {
s = decodeURI(s).toLocaleUpperCase();
for (a in EXTENSIONS) {
if (s.lastIndexOf(EXTENSIONS[a].toLocaleUpperCase()) == s.length - EXTENSIONS[a].length) return true
}
return false
}
function browseFolder(fol) {
if (!fol.length) fol = [(new Folder()).selectDlg()]
var pth = [];
for (a in fol) {
var cur = new Folder(fol[a]);
if (cur.exists) findAllFiles(cur, pth, true)
}
return pth
}
function AM(target, order) {
var s2t = stringIDToTypeID,
t2s = typeIDToStringID;
target = target ? s2t(target) : null;
this.getProperty = function (property, descMode, id, idxMode) {
property = s2t(property);
(r = new ActionReference()).putProperty(s2t('property'), property);
id != undefined ? (idxMode ? r.putIndex(target, id) : r.putIdentifier(target, id)) :
r.putEnumerated(target, s2t('ordinal'), order ? s2t(order) : s2t('targetEnum'));
return descMode ? executeActionGet(r) : getDescValue(executeActionGet(r), property);
}
this.hasProperty = function (property, id, idxMode) {
property = s2t(property);
(r = new ActionReference()).putProperty(s2t('property'), property);
id ? (idxMode ? r.putIndex(target, id) : r.putIdentifier(target, id))
: r.putEnumerated(target, s2t('ordinal'), s2t('targetEnum'));
try { return executeActionGet(r).hasKey(property) } catch (e) { return false }
}
this.descToObject = function (d) {
var o = {}
for (var i = 0; i < d.count; i++) {
var k = d.getKey(i)
o[t2s(k)] = getDescValue(d, k)
}
return o
}
this.place = function (pth) {
var descriptor = new ActionDescriptor();
descriptor.putPath(s2t("null"), pth);
descriptor.putBoolean(s2t("linked"), true);
executeAction(s2t("placeEvent"), descriptor, DialogModes.NO);
}
this.makeSelection = function (top, left, bottom, right) {
(r = new ActionReference()).putProperty(s2t('channel'), s2t('selection'));
(d = new ActionDescriptor()).putReference(s2t('null'), r);
(d1 = new ActionDescriptor()).putUnitDouble(s2t('top'), s2t('pixelsUnit'), top);
d1.putUnitDouble(s2t('left'), s2t('pixelsUnit'), left);
d1.putUnitDouble(s2t('bottom'), s2t('pixelsUnit'), bottom);
d1.putUnitDouble(s2t('right'), s2t('pixelsUnit'), right);
d.putObject(s2t('to'), s2t('rectangle'), d1);
executeAction(s2t('set'), d, DialogModes.NO);
}
this.transform = function (dw, dh) {
(d = new ActionDescriptor()).putEnumerated(s2t("freeTransformCenterState"), s2t("quadCenterState"), s2t("QCSAverage"));
(d1 = new ActionDescriptor()).putUnitDouble(s2t("horizontal"), s2t("pixelsUnit"), 0);
d1.putUnitDouble(s2t("vertical"), s2t("pixelsUnit"), 0);
d.putObject(s2t("offset"), s2t("offset"), d1);
d.putUnitDouble(s2t("width"), s2t("percentUnit"), dw);
d.putUnitDouble(s2t("height"), s2t("percentUnit"), dh);
executeAction(s2t("transform"), d, DialogModes.NO);
}
this.setName = function (title) {
(r = new ActionReference()).putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
(d = new ActionDescriptor()).putReference(s2t("null"), r);
(d1 = new ActionDescriptor()).putString(s2t("name"), title);
d.putObject(s2t("to"), s2t("layer"), d1);
executeAction(s2t("set"), d, DialogModes.NO);
}
this.rasterize = function () {
(d = new ActionDescriptor()).putReference(s2t('target'), r);
executeAction(s2t('rasterizePlaced'), d, DialogModes.NO);
}
function getDescValue(d, p) {
switch (d.getType(p)) {
case DescValueType.OBJECTTYPE: return { type: t2s(d.getObjectType(p)), value: d.getObjectValue(p) };
case DescValueType.LISTTYPE: return d.getList(p);
case DescValueType.REFERENCETYPE: return d.getReference(p);
case DescValueType.BOOLEANTYPE: return d.getBoolean(p);
case DescValueType.STRINGTYPE: return d.getString(p);
case DescValueType.INTEGERTYPE: return d.getInteger(p);
case DescValueType.LARGEINTEGERTYPE: return d.getLargeInteger(p);
case DescValueType.DOUBLETYPE: return d.getDouble(p);
case DescValueType.ALIASTYPE: return d.getPath(p);
case DescValueType.CLASSTYPE: return d.getClass(p);
case DescValueType.UNITDOUBLE: return (d.getUnitDoubleValue(p));
case DescValueType.ENUMERATEDTYPE: return { type: t2s(d.getEnumerationType(p)), value: t2s(d.getEnumerationValue(p)) };
default: break;
};
}
}
Не показывает с впн не показывает без впн, тем более я не из РФ, у нас ютуб НЕ заблокирован. У тебя в настройках Ютуба , раздел Ваше видео надо выбрать возле каждого ролика Параметры доступа - Для всех или По ссылке. И сохранить. Возле КАЖДОГО ролика.
Спасибо Серёга! Век живи, век учись!![]()
Шнур, пользуясь случаям - шортсы на ютьюбе из вашей темы не видны (пишет ошибка доступа - они либо не прошли модерацию, либо приватные)
Через VPN у меня всё показывает![]()