Quantcast
Channel: Adobe Community : Popular Discussions - Photoshop Plugin and Companion App SDK
Viewing all 54282 articles
Browse latest View live

Help open image with Photoshop from VB.NET or c# project

$
0
0

I am trying to fix an issue in a VB.NET project. The project used to have an option to open files with Photoshop.

The project includes a Photoshop.dll.

 

The following call:

Dim app As New Photoshop.Application

 

thows an exception:

Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 80040154.

 

The project was created under VS2005 (I converted it to VS2010). The error happens if I build in x64, x86 or AnyCPU.

 

I have no idea what Photoshop CSx version the dll may be targetting (I have CS6 installed - so the problem may be a mismatched version ?)

In which case I would need a specific version for each Photoshop that the users may have installed (?????)

 

My guess of a mismatch version was correct - as I got the proper COM component, I was able to open Photoshop once, but this restricts me to one version, so any users of my program running other Photoshop CSx will still get the above exception.

 

What can I do to get around this ? How can I open my files, regardless of Photoshop version ?

 

And even worse - as soon as I made one change, I can't open the COM component anymore.reference.png

 

 

Thank you.


Which license is the plugin.dll under?

$
0
0

The plugin.dll is needed to access some filter plugins in .8BF format. These filters may be free and can be used in other programs like Corel PaintShop or Irfanview, too. But when the filters need this plugin the users of these filters need to find a way to get it.

 

Therefore I ask:

Under which license is this plugin.dll and in which way is redistribution allowed?

What is the suggested way to get it legally correct?

add item to context menu

$
0
0

Hi everybody! is it possible to add item in context menu when right button mouse clicking on layer?

cannot open inlcude file

$
0
0

Hey guys,

  This is my first plug-in, and I'm running into this problem where visual studio 2013 is complaining about an inactive preprocessing block that is trying to call <Carbon/Carbon.h>.  Aside from having trouble with some of the additional include files not being found (which I crudely got around), this seems to be its only complaint.  I can't find a carbon.h anywhere. But more importantly, carbon.h shouldn't be getting called in the first place, as far as I can tell. The error is:

 

error RC2188: ...\pluginsdk\\photoshopapi\\photoshop\\PIActions.h(54) : fatal error RC1015: cannot open include file 'Carbon/Carbon.h'.   ...\pluginsdk\samplecode\automation\isiauto\\photoshopapi\\photoshop\\pica_sp\\SPConfig.h

 

in PIActions.h, the chunk of code it seems to not like is:

 

#ifdef Rezinactive

 

    #if !MSWindows && !qiOS

    #include <Carbon/Carbon.r>

    #endif

 

#else

 

#if !MSWindows && !qiOS

    #include <Carbon/Carbon.h>

#endif


Has anyone run into something similar?

 

Thanks!

How can I name the image or file I am editing from a Photoshop filter plugin?

$
0
0

Hi,

 

I am using the Photoshop CS6 sdk for windows and I would like to be able to modify the filename from my filter plugin.

 

Does anyone know how to do this?

 

Thanks,

Dave

Automation from a filter plugin

$
0
0

The background:

I've been coding in C++ for 15 years and C for about 12 before that, so I'm pretty well versed in the tools required for writing plugins.

My experience in writing plugins for Photoshop though is pretty close to zero at the moment having only recently downloaded the SDK and poking around in the examples.

My experience in using Photoshop is also at beginner level.

 

The question:

I am working with my stepdaughter (who is a newborn & toddler photographer) in creating plugins specifically tailored for other photographers, both amateur and professional, in the same line of work.

She has already successfully sold sets of actions, but would like move up to developing a range of plugins. As I'm the software engineer in the family it's down to me to see if her idea is a runner or not.

One of the requirements is that some of the filters must contain a certain amount of automation, such as creating a new layer, turning it into a mask etc.

 

My research so far has lead me to believe that filters are only filters and automation plugins only automate and they live in their own separate menus.

Is this true?

Can filter plugins control Photoshop in some way like a script or automation plugin, or is it denied this type of access?

 

Cheers for any enlightenment.

grab image from photoshop using sdk

$
0
0

the following sampe in the sdk shows how the client requests

a thumbnail from photoshop.

 

 

var idNS = stringIDToTypeID("sendDocumentThumbnailToNetworkClient")

var desc1 = new ActionDescriptor();

desc1.putInteger( stringIDToTypeID("width"  ), 640;

desc1.putInteger( stringIDToTypeID("height" ), 400);

desc1.putInteger( stringIDToTypeID("format" ), 1);

executeAction( idNS, desc1, DialogModes.NO );

 

The command above sends an image to the client, which has no metadata like exif.

 

 

BUT how can the client request a full  IMAGE (Picture with metadata and not downsized) not a thumbnail from photoshop

sending it to the client ??? Is there any message like above ?

 

where are the messages listed like "sendDocumentThumbnailToNetworkClient"

and other, I can't find them anywhere ??

 

best regards

Chris

Perspective Grid Tool

$
0
0

Hi,

   I do programming with C++ & Python and this is first time i m going to make plugin for Photoshop.

My aim is to create "Perspective Grid Tool" like in Adobe Illustrator.

nf_gridpresetsdef_popup.png

So please advice me , From Where can i start ??


How can I see the alpha channel in the channels palette?

$
0
0

Hello, mi format plugin loads a rgba image. I see it with transparency, that's ok, but when I go to the channels tab I only see 4 items (RGB, Red, Green and Blue).

 

How can I see the alpha channel of my file in the channel tab?

 

Thanks!

Creating my first Photoshop plugin

$
0
0

Hi all,

 

I am a programmer, I program in PHP, and Obj-C, I know C++ quite fair. I also Design web templates & code them. I need a plugin for photoshop, I searched it but I couldn't find it. So I thought I will try creating it for mysel & if it was nice I will share it too. But unfortunately I don't much help online for creating a very basic photoshop plugin.

 

By the way, here are my requirments for that plugin:

 

Most when I create my templates, I group layers e.g Button, Banner, CommentBox etc etc. Now all the related layers are gouped, but if I sometime want to move 2 layers from Buttons, 3 layers from Banner, & 1 layer from CommentBox group, so I select all those layers (Searching for them in my Layer palette ) & move all together. Now I want to move them again I will search for all these layers again across those groups, so I want to save layer selections. e.g I select a few layers across different groups, & save the selection as 'LeftObjects' & similarly select some more layers and save this layer selection as 'RightObjects'. Now whenever I need to select all those left layers together I click the 'LeftObjects' selection & select all the layers for me saving me from searching for those layers.

 

I would really appreciate if someone could help, or suggest me  a step by step guide to a basic Photoshop plugin. I am a pretty good learner, so I would do it, but I just need a start.

 

Thank you all

 

Cheers.

I can't get Imagenomic Portraiture trial to work in Photoshop cc 2014 please help?

$
0
0

I have previously used the trial successfully but it expired and I deleted it and then bought the Portraiture package only to be told that I have to install the trial and can then only enter the license key. The trial installs successfully ie I get the green tick for successful installation but it does not show up in my Photoshop Filters? I have contacted Imagenomic who are virtually impossible to contact and then are not interested in your problems once they have your money. Can you believe this level of customer service???  So frustrated.

 

What I have tried:

Quit PS before installation.

Shutdown before and after installation.

Checked System requirements for the software see below, it looks ok to me? ( I see below it is OK for PS CC but PS CC2014 is not specifically mentioned, could this be a problem now bearing in mind that I did get it to work on CC 2014 before?)

Installing via Firefox and via Safari.

 

My workware: MAcBook Pro OSX 10.9.4

                       Photoshop CC 2014

                       Imagenomic Portraiture trial current trial download version.

                        The trial I am trying to download is : Portraiture Plugin for Adobe Photoshop CS5/CS6/CC 

                                                                                  and Photoshop Elements 11/12 - Mac OS X 10.7/10.8/10.9 v.2.3.3 build 2330

                                                                                  Mac OS X 10.7.x/10.8.x/10.9.x, 1GB RAM, 100MB HDD, 1280x800 min resolution, Photoshop CS5/CS6/CC or Elements 11/12  ( this is the same one that I did

                                                                                  get to work before)

3D obj export

$
0
0

Hi

I am trying to find a way to export a 3D layer which has an obj 3D object.

Looking at the scripting documentation there is no option for saving a .obj or any other 3D format.

Is this possible through the C API of the Photoshop sdk.

 

Thanks

Dimi

Photoshop CS5 extended (extension manager not allowed me to connect with photobacks)

$
0
0

I have a CS5 extended which is registered under my name.  Recently, I bought a plug-in software "photobacks", I want to install it into my CS5 extended, but the extension manager said "You do not have the appropriate permissions required to perform this operation.  Contact your system administrator to obtain permission." I did chat with Adobe Customer Care so many times, but nobody can help.  Would any experts can help me to solve this problem.

Photoshop filter plugin: How are Visual Themes enabled?

$
0
0

Hello,

 

Looking at some very old plugins, I was wondering why some plugins had Visual Themes enabled (i.e. their dialogs have normal WinXP/Vista/Win7/... buttons) while others have not (i.e. Windows 9x buttons).

 

Let's say there are two filter plugins :

  • OldFilter.8bf without Visual Themes
  • NewFilter.8bf with Visual Themes

 

So I did some experiments:

 

1. NewFilter.8bf has an XP Manifest ressource, while OldFilter.8bf does not. So, my first idea was to simply add a Manifest ressource to OldFilter.8bf using a Resource Editor. But that did not work: The controls are still in Windows 9x style. I double checked that the manifest is valid and correctly added to the 8BF DLL.

 

2. I checked the PE header flags of the 8BF files. Both have the fields MajorOperatingSystemVersion/MinorOperatingSystemVersion set to 4.00 (i.e. they are Win95 compatible plugins, not Win3.11 plugins)

 

3. In the MSDN I have read that an application can disable Visual Themes by calling SetWindowTheme(hWnd, L" ", L" ")

 

As a small test, I have edited Photoshop.exe with an hex editor and replaced the string "SetWindowTheme" with something else, e.g. "XXXWindowTheme", so that the WinAPI call will fail. Et voilà: OldFilter.8bf has now Visual Themes enabled (or better to say: It has its themes not disabled)

 

Of course, this is not an acceptable solution, since I don't want to have a modified Photoshop.exe, and invalidate this WinAPI function call might cause thousand other side effects, and it affects all plugins.

 

My understanding of what is going on is: When Photoshop.exe calls the filter plugin, it somehow checks if this plugin is able to handle Visual Themes. If Photoshop.exe does not think that the plugin is able to, it will call SetWindowTheme to disable Visual Themes, in order to reach a good backwards compatibility.

 

Now the question is, how does Photoshop.exe detect it? Are there some compatibility flags inside the 8BF file, or is there a special callback function to query compatibility flags?

Enable Selection and Mask Support for a Plug In

$
0
0

Hello,

 

I would like to add Selection / Masking awareness to my Plug In.

The problem is I can't get the information about the Selection from Photoshop (At least not according to my understanding of the documentation).

 

Here is a simple test case.
Lets say we have an image (Background Layer only) of size 400 x 400 (Width x Height).
The user used Rectangular Marquee Tool to select a rectangle area of 50 x 50 (Width x Height) which it top left corner is on pixel 51, 51 (Row Number, Column Number). So it masks pixels [51:100, 51:100].

 

 

The question is, how can I get the coordinates of this selection.
Here is the relevant documentation in PIFilter.h (Assuming using non BigDocument for the simplicity):

 

 

/** @ingroup FilterModule 
*/
/** This structure is passed to the plug-in module through the parameter block.
* See @ref PGPluginEntryPoint "Plug-in Entry Point" for an explanation of how the 
* host calls a plug-in.
*/
typedef struct FilterRecord 
{


Point imageSize; /**< \deprecated Use \c BigDocumentStruct::imageSize32. The width and height
of the image in pixels. If the selection is floating, this field instead 
holds the size of the floating selection.  */
Rect filterRect; /**< \deprecated Use \c BigDocumentStruct::filterRect32.
The area of the image to be filtered. This is the bounding                                      box of the selection, or if there is no selection, the                                      bounding box of the image. If the selection is not a perfect                                      rectangle, Photoshop automatically masks the changes to the                                     area actually selected (unless the plug-in turns off this                                      feature using autoMask). This allows most filters to ignore                                      the selection mask, and still operate correctly. */
Rect inRect; /**< \deprecated Use \c BigDocumentStruct::inRect32.                                      The area of the input image to access. The plug-in should set 
this field in the \c filterSelectorStart and                                      \c filterSelectorContinue handlers to request access to an                                      area of the input image. The area requested must be a subset                                      of the image’s bounding rectangle. After the entire                                      \c filterRect has been filtered, this field should be set to                                      an empty rectangle.  */
Rect outRect; /**< \deprecated Use \c BigDocumentStruct::outRect32.                                     The area of the output image to access. The plug-in should set                                      this field in its \c filterSelectorStart and \c filterSelectorContinue                                      handlers to request access to an area of the output image.                                      The area requested must be a subset of \c filterRect. After                                      the entire \c filterRect has been filtered, this field                                      should be set to an empty rectangle.  */
void * inData; /**< A pointer to the requested input image data. If more than                                      one plane has been requested (see \c inLoPlane and \c inHiPlane), the                                      data is interleaved. */
int32 inRowBytes; /**< The offset between rows of the input image data. 
The end of each row may or may not include pad bytes. */
void * outData; /**< A pointer to the requested output image                                      data. If more than one plane has been requested                                      (see \c outLoPlane and \c outHiPlane), the data is interleaved. */
int32 outRowBytes; /**< The offset between rows of the output image data.                                      The end of each row may or may not include pad bytes. */


Boolean isFloating; /**< Indicates if the selection is floating. Set to TRUE if and only if                                      the selection is floating. */
Boolean haveMask; /**< Indicates if the selection has a mask. Set to true if and only if                                       non-rectangular area has been selected. */
Boolean autoMask; /**< Enables or disables auto-masking. By default, Photoshop                                      automatically masks any changes to the area actually selected.                                     If \c isFloating=FALSE, and \c haveMask=TRUE, the plug-in can                                      turn off this feature by setting this field to FALSE. It can                                      then perform its own masking. <br><br>
If the plug-in has set the PiPL bit \c writesOutsideSelection, this 
will always be FALSE and the plug-in must supply its own mask, if 
needed. */


Rect maskRect; /**< \deprecated Use \c BigDocumentStruct::maskRect32.                                     Provides a mask rectangle. If \c haveMask=TRUE, and the                                      plug-in needs access to the selection mask, the plug-in                                     should set this field in your \c filterSelectorStart and                                      \c filterSelectorContinue handlers to request access to an                                      area of the selection mask. The requested area must be a                                      subset of \c filterRect. This field is ignored if there is                                      no selection mask.  */
void * maskData; /**< A pointer to the requested mask data. The data is in the                                      form of an array of bytes, one byte per pixel of the selected                                      area. The bytes range from (0...255), where 0=no mask                                      (selected) and 255=masked (not selected).                                      Use \c maskRowBytes to iterate over the scan lines of the                                      mask. */
int32 maskRowBytes; /**< The offset between rows of the mask data. */


int16 imageMode; /**< The mode of the image being filtered, for example, Gray Scale, RGB Color,                                      and so forth. See @ref ImageModes "Image Modes" for values. The \c filterSelectorStart                                      handler should return \c filterBadMode if it is unable to                                      process this mode of image. */
Point floatCoord; /**< \deprecated Use \c BigDocumentStruct::floatCoord32.                                     The coordinate of the top-left corner of the selection                                      in the main image’s coordinate space. */
Point wholeSize; /**< \deprecated Use \c BigDocumentStruct::wholeSize32.                                     The size in pixels of the entire main image. 
*/


///@name New in 3.0. 
//@{
int16 filterCase; /**< The type of data being filtered. Flat, floating, layer                                      with editable transparency, layer with preserved transparency,                                      with and without a selection. A zero indicates that the host                                      did not set this field, and the plug-in should look at                                      \c haveMask and \c isFloating. See @ref FilterCaseIdentifiers for values. */
Fixed inputRate; /**< The sampling rate for the input. The effective input                                      rectangle in normal sampling coordinates is                                      <code> inRect * inputRate. </code> For example,                                      <code> (inRect.top * inputRate,                                      inRect.left * inputRate, inRect.bottom * inputRate,                                      inRect.right * inputRate). </code> The value for                                     \c inputRate is rounded to the                                      nearest integer in Photoshop 3.0.1+. Since the scaled                                      rectangle may exceed the real source data, it is a good                                      idea to set some sort of padding for the input as well. */
Fixed maskRate; /**< Like \c inputRate, but as applied to the mask data. */


//@}
///@name Reserved Space for Expansion
//@{
char reserved [46]; /**< Reserved for future use. Set to zero. */
//@}


}
FilterRecord, *FilterRecordPtr;



 

Looking at this I would assume the data would be available in filterRect as its description says:

This is the bounding box of the selection, or if there is no selection, the bounding box of the image.

Yet it always holds the size of the image itself.

 

Anyone could comment on how it should be done?First for Selection and later for Masks (Soft Selections).

 

Thank You.


Cannot get layer metadata in c++ plugin

$
0
0

I am trying to read-write metadata at the layer level. I have referred Accessing per-layer metadata from plugin

 

This is my write code

sPSActionControl->StringIDToTypeID("XMPMetadataAsUTF8", &xmpDataKey);

 

//Reference

error = sPSActionReference->PutProperty(ref.get(), classProperty, xmpDataKey);

error = sPSActionReference->PutIdentifier(ref.get(), classLayer, layerId);

sPSActionReference->PutIdentifier(ref.get(), classDocument, docId);

sPSActionDescriptor->PutReference(desc.get(), keyNull, ref.get());

 

sPSActionDescriptor->PutString(datadesc.get(), xmpDataKey, parasrip.c_str());

sPSActionDescriptor->PutObject(desc.get(), keyTo, xmpDataKey, datadesc.get());

error = sPSActionControl->Play(&result, eventSet, desc.get(), plugInDialogSilent);

 

and this is my read code

sPSActionControl->StringIDToTypeID("XMPMetadataAsUTF8", &xmpDataKey);

SPErr error1 = PIUGetInfoByID(layerId, classLayer, xmpDataKey, &desc1, NULL);

Boolean hasKey;

hasKey = false;

error = sPSActionDescriptor->HasKey(desc1, xmpDataKey, &hasKey);

 

 

Somehow I am not able to get the layer metadata while reading the action descriptor. Can someone guide what is wrong with the program ??

Photoshop plugin development

$
0
0

Hi all,

Thanks for reading my post.

I am going to develop a new photoshop plugin but I am new in this area but I have rich experience of C++ development so I think, I can do.

But I need some help since I stand at starting point.

Capture.PNG

I am going to build above plugin. I just downloaded photoshop plugin sdk. Is it enough to develop such plugin?

And I also heard that Filter Meister is good for plugin development. which is the correct way to build above plugin?

The GUI should be same with the photo.

Will be very happy if someone help me.

 

oh forgot it, Happy new year!!!

Looking for a senior photoshop plugin developer

$
0
0

Hello

 

I am looking for a senior photoshop plugin developer.

The plugin details, you can find in following link.

Photoshop plugin development

 

If anyone can develop this plugin perfectly, please ping me.

email: sanit.sa@outlook.com

skype: live:dev_star11

 

I am willing to pay good price for this job. The timeline is 2 weeks.

Hope to hear from any candidates.

Analyzing PSD files

$
0
0

We are planning to develop applications that analyze PSD files and link them to the next action for Photoshop users.

Does Adobe prohibit analysis of PSD files?

Or, do we need a contract with Adobe?

Can't execute action of event 'toolModalStateChanged' in Photoshop CC 2019

$
0
0

Hello,

 

I trying to play a recorded script using 'ScriptingListener.plugin' to select, duplicate and move a layer using 'move' tool with 'Alt' option.

The 'ScriptingListenerJS.log' file give to actions:

 

// =======================================================

var idtoolModalStateChanged = stringIDToTypeID( "toolModalStateChanged" );

    var desc5 = new ActionDescriptor();

    var idLvl = charIDToTypeID( "Lvl " );

    desc5.putInteger( idLvl, 1 );

    var idStte = charIDToTypeID( "Stte" );

    var idStte = charIDToTypeID( "Stte" );

    var identer = stringIDToTypeID( "enter" );

    desc5.putEnumerated( idStte, idStte, identer );

    var idTool = charIDToTypeID( "Tool" );

        var desc6 = new ActionDescriptor();

        var idIdnt = charIDToTypeID( "Idnt" );

        desc6.putString( idIdnt, """arwT""" );

        var idTtl = charIDToTypeID( "Ttl " );

        desc6.putString( idTtl, """Herramienta Mover""" );

    var idTool = charIDToTypeID( "Tool" );

    desc5.putObject( idTool, idTool, desc6 );

    var idKnd = charIDToTypeID( "Knd " );

    var idKnd = charIDToTypeID( "Knd " );

    var idmouse = stringIDToTypeID( "mouse" );

    desc5.putEnumerated( idKnd, idKnd, idmouse );

    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );

    desc5.putBoolean( idkcanDispatchWhileModal, true );

executeAction( idtoolModalStateChanged, desc5, DialogModes.NO );

 

 

// =======================================================

var idtoolModalStateChanged = stringIDToTypeID( "toolModalStateChanged" );

    var desc7 = new ActionDescriptor();

    var idLvl = charIDToTypeID( "Lvl " );

    desc7.putInteger( idLvl, 0 );

    var idStte = charIDToTypeID( "Stte" );

    var idStte = charIDToTypeID( "Stte" );

    var idexit = stringIDToTypeID( "exit" );

    desc7.putEnumerated( idStte, idStte, idexit );

    var idTool = charIDToTypeID( "Tool" );

        var desc8 = new ActionDescriptor();

        var idIdnt = charIDToTypeID( "Idnt" );

        desc8.putString( idIdnt, """arwT""" );

        var idTtl = charIDToTypeID( "Ttl " );

        desc8.putString( idTtl, """Herramienta Mover""" );

    var idTool = charIDToTypeID( "Tool" );

    desc7.putObject( idTool, idTool, desc8 );

    var idKnd = charIDToTypeID( "Knd " );

    var idKnd = charIDToTypeID( "Knd " );

    var idmouse = stringIDToTypeID( "mouse" );

    desc7.putEnumerated( idKnd, idKnd, idmouse );

    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );

    desc7.putBoolean( idkcanDispatchWhileModal, true );

executeAction( idtoolModalStateChanged, desc7, DialogModes.NO );

 

If I play this actions in 'ExtendScript Toolkit' I get a error on executeAction.

 

Also I tried to convert the script as C function in a Automation plugin with the same result.

 

There is no way to play a 'toolModalStateChanged' event?

Viewing all 54282 articles
Browse latest View live