Memory Usage

  • Автор темы Автор темы Archimedes
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Archimedes

Участник
Топикстартер
Сообщения
43
Реакции
0
Прошу прощения, что повторяюсь, но проблема не дает жить и к тому же появились новые сведения.

Проблема состоит в следующем. При открытии фотошоповского файла, в PS 8, занимающего на диске приблизительно 150 мегабайт фотошоп "размывает" его на 492 мегабайта и образует файл подкачки размером в 1.6 гигабайт. Если я ставлю Memory Usage больше 57%, то фотошоп его "размывает" на 992 мегабайта и файл подкачки становится 4 гигабайта и соответственно тормозит жутко. Раньше я думал, что конфликтуют фотошопы 8 и 9 (установлены оба), но сегодня переустановил систему и на свежеустановленном 8-м фотошопе повторил опыт - результат плачевный. 9й фотошоп работает нормально и при 90%. Помогите плиз.

P.S. памяти утановлено 2 Гб.
 
Ответ: Memory Usage

чем не устраивает 9й
 
Ответ: Memory Usage

Я подозреваю, что в 8м как-то криво реализован процесс управления памятью и файлом подкачки, если помните, 9й вышел почти сразу за ним
 
Ответ: Memory Usage

P.S. памяти утановлено 2 Гб.

Это в 9-м стало возможным использовать больше 1гб.

Насчет скритинга. Я чот проблемы не уловил - сам пишу на басике, но есть несколько ява-скриптов, где, например, используется команда flatten и следующие за ней команды спокойно ждут своей очереди.

Однако, на форуме по скриптигу, вроде бы, я встречал описание вашей проблемы и было какое-то решение. Я уже ничего не помню, форум вот: http://www.ps-scripts.com/bb/
 
Ответ: Memory Usage

Ура! Хоть кто-то!
greatdeal сказал(а):
Это в 9-м стало возможным использовать больше 1гб.
От это да. Грустно все это.

greatdeal сказал(а):
Насчет скритинга. Я чот проблемы не уловил - сам пишу на басике, но есть несколько ява-скриптов, где, например, используется команда flatten и следующие за ней команды спокойно ждут своей очереди.
Попробовал что-то подобное. Есть у меня операция разрезания канвы на части и их сохранение с предварительным flatten

Код:
...

 PSFlattenImage;

 if CheckBox1.Checked
 then
 begin
 i:=i+1;
 PSCanvasSize(phEnumTop,phEnumLeft,CSHeight,CSWidth);
 PSSaveJPG(Param.PPath+addPath+AName+IntToStr(i)+'.jpg');
 PSHistory(-1);
 end;

 if CheckBox2.Checked
 then
 begin
 i:=i+1;
 PSCanvasSize(phEnumTop,phEnumCenter,CSHeight,CSWidth);
 PSSaveJPG(Param.PPath+addPath+AName+IntToStr(i)+'.jpg');
 PSHistory(-1);
 end;

 if CheckBox3.Checked
 then
 begin
 i:=i+1;
 PSCanvasSize(phEnumTop,phEnumRight,CSHeight,CSWidth);
 PSSaveJPG(Param.PPath+addPath+AName+IntToStr(i)+'.jpg');
 PSHistory(-1);
 end;
..

где

Код:
Procedure PSFlattenImage;
var
 ad,ad2:IActionDescriptor;
begin
 ad2:=v.MakeDescriptor;
 ad:=v.MakeControlObject.Play(phEventFlattenImage,ad2,phDialogDontDisplay);
end;

Код:
Procedure PSCanvasSize(posV,posH,CHeight,CWidth:integer);
//PosV PosH
//phEnumCenter phEnumCenter
//phEnumBottom phEnumRight
//phEnumTop phEnumLeft
var
 ad,ad2:IActionDescriptor;
begin
 ad2:=v.MakeDescriptor;
 ad:=v.MakeDescriptor;

 ad2.PutUnitDouble(phKeyWidth,phUnitPixels,CWidth);
 ad2.PutUnitDouble(phKeyHeight,phUnitPixels,CHeight);

 ad2.PutEnumerated(phEnumHorizontal,phTypeHorizontalLocation,posH);
 ad2.PutEnumerated(phEnumVertical,phTypeVerticalLocation,posV);

 ad:=v.MakeControlObject.Play(phEventCanvasSize,ad2,phDialogDontDisplay);
end;

Код:
Procedure PSSaveJPG(FileName:string);
var
 ad,ad2,ad3:IActionDescriptor;
 Procedure LocalSave;
 begin
 ad2:=v.MakeDescriptor;
 ad3:=v.MakeDescriptor;

 ad3.PutInteger(phKeyExtendedQuality,10);
 ad3.PutEnumerated(phKeyMatteColor,phKeyMatteColor,phEnumNone);

 ad2.PutObject(phKeyAs,phClassJPEGFormat,ad3);
 ad2.PutBoolean(phKeyCopy,1);
 ad2.PutPath(phEnumStampIn,FileName);
 ad:=v.MakeControlObject.Play(phEventSave,ad2,phDialogDontDisplay);
 end;

begin
 if CheckDir(ExtractFileDir(FileName)) then
 if not FileExists(FileName)
 then
 LocalSave
 else
 if Application.MessageBox(PChar('Файл с именем '+FileName+' существует. Заменить его ?'), PChar('Ошибка !!!'),
 MB_DEFBUTTON1+MB_ICONEXCLAMATION+MB_OKCANCEL) = IDOK
 then LocalSave;


end;

Код:
Procedure PSHistory(i:integer);
 var
ar:IActionReference;
ad,ad2:IActionDescriptor;
begin
 ad2:=v.MakeDescriptor;
 ad:=v.MakeDescriptor;
 ar:=v.MakeReference;

 ar.PutOffset(phClassHistoryState,i);
 ad2.PutReference(phKeyNull,ar);

 ad:=v.MakeControlObject.Play(phEventSelect,ad2,phDialogDontDisplay);
end;


Как ни странно, но сработало нормально. Может апдате до 9.02 помогает.

НО!

пробую следующее. Загрузка фоток из папки и укладывание их стопкой в один заранее подготовленный файл.

Код:
procedure TDM.ALoadPortretsExecute(Sender: TObject);

var
 Dir:string;
 SRec:TSearchRec;

begin
 Dir:=Param.ScanDir;
 if SelectDirectory('Выберите директорию для загрузки','\',Dir) then
 if FindFirst(Dir+'\*.*',faArchive,SRec)=0 then
 repeat
 PSOpenDocument(Dir+'\'+SRec.Name);
 PSSelectAll;
 PSCopy;
 PSCloseDocument;
 PSPaste;
.
 until FindNext(SRec)<>0;
.
end;

где

Код:
Procedure PSOpenDocument(FileName:string);
var
 ad,ad2:IActionDescriptor;
begin
 ad2:=v.MakeDescriptor;
 ad2.PutPath(phTypeNull,FileName);
 ad:=v.MakeControlObject.Play(phEventOpen,ad2,phDialogDontDisplay);
end;


Код:
Procedure PSSelectAll;
 var
 SAad,SAad2:IActionDescriptor;
 SAar:IActionReference;
begin
 SAad2:=v.MakeDescriptor;
 SAar:=v.MakeReference;
 SAar.PutProperty(phClassChannel,phKeySelection);
 SAad2.PutReference(phTypeNull,SAar);
 SAad2.PutEnumerated(phKeyTo,phTypeOrdinal,phEnumAll);
 SAad:=v.MakeControlObject.Play(phEventSet,SAad2,phDialogDontDisplay);
end;

Код:
Procedure PSCopy;
 var
 Cad,Cad2:IActionDescriptor;
begin
 Cad:=v.MakeControlObject.Play(phEventCopy,Cad2,phDialogDisplay);
end;


Код:
Procedure PSCloseDocument;
 var
 ad,ad2:IActionDescriptor;
begin
 ad2:=v.MakeDescriptor;
 ad2.PutEnumerated(phKeySaving,phTypeYesNo,phEnumNo);
 ad:=v.MakeControlObject.Play(phEventClose,ad2,phDialogDontDisplay);
end;

Код:
Procedure PSPaste;
 var
 ad,ad2:IActionDescriptor;
begin
 ad2:=v.MakeDescriptor;
 ad2.PutEnumerated(phClassAntiAliasedPICTAcquire,phTypeAntiAlias,phEnumAntiAliasNone);
 ad:=v.MakeControlObject.Play(phEventPaste,ad2,phDialogDontDisplay);
end;

Так вот. Очень быстренько он закрывает исходный документ в который он должен был сложить фотки и начинает их пытаться класть в никуда - выдает эрор. Т.е. сюда по всему выполняется PSCloseDocument прежде чем завершится PSOpenDocument. Может есть какие-то мысли. В 8м работает нормально.


greatdeal сказал(а):
Однако, на форуме по скриптигу, вроде бы, я встречал описание вашей проблемы и было какое-то решение. Я уже ничего не помню, форум вот: http://www.ps-scripts.com/bb/

Буду оч признателен, если вспомните хоть в каком субфоруме было. Просмотрел - не нашел, при том, что в английском не силен.
 
Ответ: Memory Usage

Я вобще ни разу не понял, на каком языке вы пишите скрипты. Или это какой-то особый синтаксис явы?
 
Ответ: Memory Usage

greatdeal сказал(а):
Я вобще ни разу не понял, на каком языке вы пишите скрипты. Или это какой-то особый синтаксис явы?

Да это Паскаль, однако!
Дельфи, судя по всему...
 
Ответ: Memory Usage

Я вижу какая-то смесь бульдога с носорогом - темный я в это деле, но на яве точно такого не видел: if ... then; repeat ... until.

Это стало быть вы басиковскую объектную библиотеку в этом компиляторе заюзали?
 
Ответ: Memory Usage


Не по теме:
Басик-то тут причем? Синтаксис точно паскалевский.
 
Ответ: Memory Usage

А чо для паскаля есть своя объектная библиотека? Впрочем, тут похоже только библиотека типов в деле.
 
Ответ: Memory Usage

greatdeal сказал(а):
А чо для паскаля есть своя объектная библиотека? Впрочем, тут похоже только библиотека типов в деле.

Библиотека типов. Паскаль. Что значит своя, вроде как она общая :-) И это не совсем скрипт.
 
Ответ: Memory Usage

Типов - общая, на нее и документации нет, в той что идет со скриптингом (в SDK есть). Так и разбирайтесь со своим паскалем. У меня на басике написанные мульки ворочают операциями типа переводов режима цвета, сглаживания, уменьшения размеров, применения фильтров, селекция и тп - все четко для любых размеров картинок.

Я уже не помню что там было конкретно, но при попытке использовать библиотеку типов, я полностью обломился с васиком. Просто не работала, или какую-то глупую ошибку выдавала.
 
Ответ: Memory Usage

greatdeal сказал(а):
Типов - общая, на нее и документации нет, в той что идет со скриптингом (в SDK есть). Так и разбирайтесь со своим паскалем. У меня на басике написанные мульки ворочают операциями типа переводов режима цвета, сглаживания, уменьшения размеров, применения фильтров, селекция и тп - все четко для любых размеров картинок.
Ну при чем тут это, какая разница на каком языке писать, с 8-м же работает идеально.

greatdeal сказал(а):
Я уже не помню что там было конкретно, но при попытке использовать библиотеку типов, я полностью обломился с васиком. Просто не работала, или какую-то глупую ошибку выдавала.
И это концептуально разные вещи: тот мануал, что идет к фотошопу подразумевает позднее связывание, а библиотека типов раннее.

P.S. Да, кстати, SDK к 8му и 9му шопу ничем не отличается кроме названия файла (по крайней мере так было при выходе 9й девятой версии, может сейчас что-то изменилось - свистните если что, чтобы опять бестолку его не качать). И вообще какой-то он у них бардаковый. Они даже с выходом 9го шопа не обновили папку Scripting Guide, заметил, что она обновилась с выходом апдейтов. Т.е. как-то у них этой области не сильно уделяется внимание.
 
Ответ: Memory Usage

Ну ладно, а что мешает запрограммировать переход по коду ошибки на процедуру ожидания, то есть, на процедуру снимающую этот код и задерживающую выполнение команд на х тиков.
 
Ответ: Memory Usage

greatdeal сказал(а):
Ну ладно, а что мешает запрограммировать переход по коду ошибки на процедуру ожидания, то есть, на процедуру снимающую этот код и задерживающую выполнение команд на х тиков.
Да ну это кощунство. Если они действительно поменяли принцип, то должен был появится флаг завершения команды, но т.к. SDK как упоминалось ничем не изменился, то остается только гадать на кофейной гуще. Пойду выброшусь из окна.
 
Ответ: Memory Usage

Не попадите в открытый колодец при этом. :)
 
Статус
Закрыто для дальнейших ответов.