Script request - Restitching image tiles

I posted this in the Photoshop Mac forum and it has been suggested that I post here for more help.

I went a piece of printing wide-ish (7500x5000pixel HDR) in my 3D, Cinema 4 d application. It has a feature called Mosaic camera that chops from the scene in a certain number of tiles and sends them to a network delivered. It is considerably faster than a machine to do the entire frame.

The problem is that I need to manually consolidate all the tiles of the picture in Photoshop once its done. Yes, it's a little awkward. The camera of tile is not any overlap between adjacent tiles, Photomerge has not all pixels of a line up.


According to the draft, there are 9 tiles, or there could be 1000. The number of lines and columns always = √ 'total number of images. All tiles have the same size. The length of the final image would be ("total number of images" √ * "a tile X width in pixels").  Similarly, the height would be (√ "total number of images" * "one tile Y height in pixels"). Tile camera renders the first and then down, so it seems that it would be 'easy' to automate the process.

It would be cool if the script would automatically recognize the number of images and calculate the final canvas size by using the above calculation.  But even if the user must manually enter these variables, that would still save you hours of hand assembly work.

If someone is feeling particularly generous and bold, I have attached a JPEG case made out by the camera of tile.


Here's how it should look after mounting:

TileCameraGOAL.jpg

I'd appreciate it really any time someone could devote to this.

I just tried with Photoshop CS3 and Tiger and any guests/errors.

I wonder if you tried to reset your preferences?

If this does not work, you could try adding this line at the top of the script...

app.displayDialogs = DialogModes.NO;

Tags: Photoshop

Similar Questions

  • Image tile to fill frame?

    I'm trying data merge, a bunch of models to create a booklet of the sample, but some of the grounds are not large enough to fill the frame 24 x 24, I created. Is there a way to make the image tile to fill the frame? It would be great if I could do something similar in the shade of illustrator pattern. Thank you!

    To jump on the fast track with datamerge, you should have all the graphic contained final before the merger. All images must adjust as you wish in your merge window. Those who need to be cloned should be cloned, grouped, adjusted dimensions required and finally exported to pdf, tiff or png. Resulting image should be offered to datamerge.

  • New bug? Horizontal white background interrupts the background image tiles after 1 to 2 pages

    My site was going on well on Firefox (and all the other major browsers), until recently. Now Firefox interrupts the white tile background image, bottom horizontal bar across the width of the page and about an inch long. What's up with that?

    This BUG really does wreak havoc on my website: link to my Site

    Correct immediately!

    Works for me on the site.

    What gets selected if you right click on that white space and open the Inspector?

    Reload Web pages, and ignore the cache.

    • Hold SHIFT and click reload.
    • Press 'Ctrl + F5' or 'Ctrl + Shift + R' (Windows, Linux)
    • Press 'Cmd + Shift + R' (MAC)
  • HOW MANY SMALL IMAGE TILES TO MAKE A LARGE IMAGE

    Hi, my loved ones...

    I am a student of mtech. As part of my project work, I want to do small images(1024*768pix) to make images of the order of 100 small images in a line and 100 images in a single column of tiles. Now iam stuck with this problem, can someone help me.,... its very useful for me...

    concerning

    Ragil

    Hi RAGIL,.
    S ' Please check if that helps
    http://forums.NI.com/T5/LabVIEW/concatenate-images/TD-p/1152507
    or this
    http://www.NI.com/example/25666/en/

  • Need a script for resizing images of Portrait and landscape without having to first sort

    OK I downloaded this great script: Image Processor Pro to create multiple batches in a single shot.

    http://blogs.Adobe.com/jkost/2015/06/image-processor-Pro-for-Photoshop-CC-2015.html

    It's great, but I still have to run a tiny drop to resize the files exactly 374 x 498 and 276 x 385, after I cut them it will be "worthy", but this was not accurate.

    Here is my method:

    I have original TIFF that I have edited, original images is usually square. (sometimes they are not, and I wish I had a solution for that as well, but one thing at a time)

    Since these TIFF I execute the script to save to 4 different folders:

    Resize to 2000 x 2000 and rename to add sizing file name

    Resize to 500 x 500 and rename to add sizing file name

    Trim & resize to 374 x 498 and rename to add sizing file name

    Trim & resize to 276 x 385 and rename to add sizing file name

    Here's what it looks like:

    Screenshot2000x2000Script.JPG

    ScreenshotTrimScript.JPG

    Here's what it looks like once I launch my image processor:

    FinalResult.JPG

    and here is an example of the files in the folder XS with dimensions:

    XS.JPG

    Which is great! But now I have to go to sort my pictures SM and XS of landscape & Portrait and THEN run another drop on them to get them to fit exactly 374 x 498 and 276 x 385.

    SO please tell me there is a better way! I'm almost there!

    If the version of Photoshop supports done condition and the condition is a conditional action as you can get without learing scripting. The problem, actions must be in the same action game and the game cannot be renamed.  Here action must be used after Image processor makes pro then the image resizing made tho conditional actions can add the canvas so that the document of the exact size.

  • Rename a batch script and link images?

    Hello, everyone!

    First of all, I did search for this before asking and found many similar scripts for this, but as I don't know how to make or edit scripts, I could not use them...

    I work in a company that produces school books. Each InDesign file that we can have hundreds of images of various extensions (.eps, .ai, .psd, .tif).

    We must now rename these images to a naming system defect that we defined. It takes hours or even days to do it manually.

    These images have currently changed names, so we would need to ignore what is there, just need us a prefix configurable (as "EF6_ESP_C1_"), then a number starting at 0001 4-digit and the rest of the numbering (if there are say a .tif and then a .ai, it should be 0001.tif and 0002.ai), then the extension that she already had.

    Preferably, but not not mandatory, if one could read that the image already had a "EQ" in the name of the file, he could rename them to another prefix and counting those separately from 0001, while we work equation images separately, but if this is impossible or is too difficult to do, so just have named and numbered with others.
    -What someone would be kind enough to help me with this? Thank you very much!

    Try this,

    var doc = app.activeDocument,
        links = doc.allGraphics, count = 1, eqcount = 1, a = "0000";
    for(var i=links.length-1;i>=0;i--)
    {
            if(links[i].itemLink.name.match(/^EQ.+/))
            {
                    var ext = links[i].itemLink.name.substr(links[i].itemLink.name.lastIndexOf(".")),
                        old = File(links[i].itemLink.filePath),
                        eqnum = (eqcount++).toString(),
                        newname = "EQ_EF6_ESP_C1_" + a.substring(0, a.length - eqnum.length) + eqnum + ext;
                    old.rename(newname);
                    links[i].itemLink.relink(File(old.toString().replace(links[i].itemLink.name,newname)))
                }
            else
            {
                    var ext = links[i].itemLink.name.substr(links[i].itemLink.name.lastIndexOf(".")),
                        old = File(links[i].itemLink.filePath),
                        num = (count++).toString(),
                        newname = "EF6_ESP_C1_" + a.substring(0, a.length - num.length) + num + ext
                    old.rename(newname);
                    links[i].itemLink.relink(File(old.toString().replace(links[i].itemLink.name,newname)))
                }
        }
    

    Please note: it is not reversible.

    Kind regards

    Cognet

  • How can I make an image tile length of the browser without using it as a background image?

    I understand that if you use the rectangle tool and stretch it to the edge of the page, triggerring the red margin, the tile image is supposed to stretch the length of the browser. While this works for width, coating horizontally, for some reason, it doesn't work for the length, Tile vertically. When I saw my work in the browser, the tile image stretches with the footer that I scroll to the bottom of the page.

    When I use the image as the background fill and tile it, it works, but I need to use a different image for the background.

    Hello

    As you said you can either use your browser complete with fitting tile or design the background image browser outside the Muse using any image editor like Photoshop and then use as fill for browser that would include the two images that you want to use as a background image and you want to use as tile on the section of the page.

    Thank you

    Sanjit

  • Script to sort Images with/without clipping paths?

    I searched for a while and can not find a script that will sort a folder of images in two new folders that contain images with and without masks. Anyone have or know of a script that will do this for me? I'd be very happy. W7, PS CS5 32 and 64 bit.

    Thanks in advance!

    Andy

    Mark has made the work a lot more on what I have and it would be so worth having an eye on them.

    Mark only your layers to find together scripts?

    The script in its present form should find ways of trimming but not group layers.

    I modified the script to split the files into hasClip, hasPath and noPath of three files.

    #target bridge
     if( BridgeTalk.appName == "bridge" ) {
    clipPaths = MenuElement.create("command", "Sort Clipping Paths", "at the end of Tools","clipping");
    }
    clipPaths.onSelect = function () {
    app.document.deselectAll();
    var thumbs = app.document.getSelection("psd, tif, jpg, eps");
    var noPath = new Folder(app.document.presentationPath+ '/noPath');
    var hasPath = new Folder(app.document.presentationPath+ '/hasPath');
    var hasClip = new Folder(app.document.presentationPath+ '/hasClip');
    if(!noPath.exists)  noPath.create();
    if(!hasClip.exists)  hasClip.create();
    if(!hasPath.exists)  hasPath.create();
    for(var a in thumbs){
    var tempFile = thumbs[a].spec;
    var Path = false;
    var Clip = false;
    tempFile.encoding='BINARY';
    tempFile.open('r');
    var str= tempFile.read();
    tempFile.close();
    var pathTag = '8BIM\x07\xd0';
    var clippingPathTag = '8BIM\x0b\xb7';
    var tagPos =str.match(pathTag);
    if(tagPos){
        Path = true;
        tagPos =str.match(clippingPathTag);
        if(tagPos){
            Clip = true;
            }
    }
    str = null;
    if(!Path) thumbs[a].moveTo(noPath);
    if(Path && Clip)  thumbs[a].moveTo(hasClip);
    if(Path && !Clip) thumbs[a].moveTo(hasPath);
    }
    };
    
  • Script request?

    Wondering if someone was willing to take the time to write a script for PS CS5 on an iMAC that would allow me to resize the content of specific folders, by name?  The attached file hierarchy is representative of both (10-271 and 272-10) more of 100 folders in the root directory of CustomHeadwear.  Each of the 100 + a folders identical four subfolders, i.e. additional, back, front and small.

    hierarchy.jpg


    I really need a script that would allow me to resize each of the subfolders for individual width specific and lengths, based on the name.  For example, if the script could provide an interface, similar to below, which would allow me to type in the four names of folders and width and then specific, height or percentage increase/decrease for each of these files.  I suppose there should also be a name for the root folder?

    scriptInterface.jpg


    I simply don't have the expertise to create scripts, but I have certainly benefited from the expertise of those who have contributed to this Forum!  Thanks for any help!

    OK, here's a quick and dirty script that should be close to what you want. The dialog box is always ugly, and there is limited error checking. As it overwrites the files, I suggest you do a little test or at least backup you files prior to running the script on important files. I test using WinXP and CS5 on one set of small test and it seems to work very well. But again use at your own risk.

    // get the root folder from the user
    var rootFolder = Folder.selectDialog('Please select the root folder');
    if( rootFolder != null ){// if the user did not cancel the dialog
         // get all the product folders in rootFolder
         var productFolders = rootFolder.getFiles(isFolder);
         // get all the subFolders in the first product folder
         var subFolders = productFolders[0].getFiles(isFolder);
         // now that we have the needed info create and show the dialog
         var win = createDialog();
         initializeDialog(win);
         var res = runDialog(win);
         if( res == 1){
              // process the files
              for( var p = 0;p key is rejected and beep is sounded if invalid
    // From the script 'Fit Image.jsx' by Adobe
    ///////////////////////////////////////////////////////////////////////////////
    function NumericEditKeyboardHandler (event) {
        try {
            var keyIsOK = KeyIsNumeric (event) ||
                            KeyIsDelete (event) ||
                               KeyIsLRArrow (event) ||
                               KeyIsTabEnterEscape (event);
    
            if (! keyIsOK) {
                //    Bad input: tell ScriptUI not to accept the keydown event
                event.preventDefault();
                /*    Notify user of invalid input: make sure NOT
                    to put up an alert dialog or do anything which
                    requires user interaction, because that
                    interferes with preventing the 'default'
                    action for the keydown event */
                app.beep();
            }
        }
        catch (e) {
            ; // alert ("Ack! bug in NumericEditKeyboardHandler: " + e);
        }
    };
    //    key identifier functions
    function KeyIsNumeric ( event ) {
        return  ( event.keyName >= '0' ) && ( event.keyName <= '9' ) && ! KeyHasModifier ( event );
    };
    function KeyHasModifier ( event ) {
        return event.shiftKey || event.ctrlKey || event.altKey || event.metaKey;
    };
    function KeyIsDelete (event) {
        //    Shift-delete is ok
        return (event.keyName == 'Backspace') && ! (event.ctrlKey);
    };
    function KeyIsLRArrow (event) {
        return ((event.keyName == 'Left') || (event.keyName == 'Right')) && ! (event.altKey || event.metaKey);
    };
    function KeyIsTabEnterEscape (event) {
         return event.keyName == 'Tab' || event.keyName == 'Enter' || event.keyName == 'Escape';
    };
    
  • Image tile... How

    I have a 100 x 100 px jpg that I use for the background of a web page. I would use this same patern to a 20 x 400 px image. How do I repeat pattern (tile?) this image to a new file of 20 x 400 px.

    Thank you for your time

    With your 100 x 100 image open, select all, then edit > use as motive. You now have your image as a reason for Photoshop.

    In your frame 20 x 400, Edition > fill (F5).

    If the result will line up with the background of your page, someone who knows more about the design of Web pages I have to say...

  • Roxio (disc burning software) request for Image Bootable Disk Bootable DVD to

    I have a problem in creating a Bootable file Windows10.iso DVD disc.   It always happens after that I just download and the software does not have disc burning for me.  (Maybe I have make mistakes).  It takes several hours for me to download the Windows10.iso file, but I have it on my hard drive.

    I have download Windows10.iso on my Win 7 Pro (64-bit) system and also to download Windows10.iso on my Win Home of 8.1 system (64-bit).  So I should have a 10 Pro window and a version of window 10 Home.

    I don't want to start the Media Center window to download again and try to burn.

    I tried using the Roxio software to burn the disc, by selecting the Windows10.iso and when I click on the make it bootable, it ask me to select the Bootable image on my hard drive.   I don't know where to find it or the name of the file.

    Can someone where I can drop the bootable image (both for Win 7 Pro and Win 8.1 home) for me?   Or a better technique to do?

    Thank you

    G

    So perhaps this: https://www.microsoft.com/en-au/software-download/windows10

    If you need to install or reinstall Windows 10 using a cable USB or DVD, you can use the media tool below to create your own installation with a Flash DRIVE or a DVD media. The tool provides files optimized for speed of download formats and can be used to create ISO files.

  • Script request - old removal agents

    In my view, there was a script floating around that I can't find.

    A groovy script which deletion than havn't agents recorded for X amount of time? I could really use it right now.

    Hello dpw.

    This script can be found under support.quest.com.

    Search forward remove obsolete items.

    Remember, this isn't for the objects in the topology of Agents, Agents himself.

    Have fun.

    Kind regards

    Jan

  • Script request to toggle the visibility of the multiple layers using regex

    Hello

    I did a ton of research, trail / error and need to reach out for help.

    I'm trying to create a PS script that activates / deactivates the visibility of the layers AND groups based on a regular expression in a PS document.

    EXAMPLE GROUP PS & LAYERS STRUCTURE

    =======================================

    • / / example

    • header

    -some layers

    -/ / test

    • footer

    -another layer

    -/ / content area

    Bullet = group

    Hyphen = layer


    This script should hide the two "/ / example", "/ / test ', and ' / / content area ' on track. Ideally, the script would reveal these layers and groups.


    I managed to find two scripts that make each half of the result you want below.

    Part 1: Use of regular expressions to locate each layer and the Group (I changed the reg exp for use cases):

    Re: Script to search for layer names

    by: Michael L Hale

    var re = /-/-/. * / ; corresponds to a reg exp var = collectNamesAM (re); Download the table of correspondence of layer indexes for (var l = 0; l < matches.length; l ++) {makeActiveByIndex (matches [t], false);   do something with layer alert (app.activeDocument.activeLayer.name); } / / next match if no function collectNamesAM (re) {var allLayers = new Array();   var startLoop = number (! hasBackground());   var endLoop = getNumberOfLayer();   for (var l = startLoop; l < endLoop; l ++) {if (! isValidActiveLayer (l)) {l ++;}}   } If (match (re) getLayerNameByIndex (l)! = null) {allLayers.push (l);   allLayers return}}; }; / * / / / / / Function: getActiveLayerIndex / / Description: Gets Gets the index of the Action Manager API / / to activeLayer corrected for background layer / / use: var idx = getActiveLayerIndex();  Entry: No / / Return: number - correct AM itemIndex / / Dependices: hasBackground / / / * / function getActiveLayerIndex() {var Ref = new ActionReference();   ref.putProperty (1349677170, 1232366921);   ref.putEnumerated (1283027488, 1332896878, 1416783732);   var RES = executeActionGet (Ref) .getInteger (1232366921) - number (hasBackground()).   RES IS 4? RES ++: res / / why the skip in this doc?    return res; } / * / / / / / Function: (isValidActiveLayer) / / Description: LayerSection checks for the "real" layers / / use: if (isValidActiveLayer()) / / entry: no / / return: Boolean - True if this is the end of a game / / Notes: not necessary if the layer has been made active / / using the Action Manager API / / / * / function isValidActiveLayer (idx) {var propName = stringIDToTypeID ("layerSection"); / / cannot replace var ref = new ActionReference();}   ref.putProperty (1349677170, propName); TypeID to "Rprp" / / "Lyr", idx ref.putIndex (1283027488, idx); ""   var / / desc = executeActionGet (ref);   type var = desc.getEnumerationValue (propName);   var RES = typeIDToStringID (type);   return res == "layerSectionEnd"? false: true; }; / * / / / / / Function: hasBackground / / Description: bottom layer using AM API Test / / use: if (hasBackground());  Entry: No / / return: Boolean - true if a background layer doc / / Notes: requires that the document be active / / DOM: App.Document.backgroundLayer / / / * / function hasBackground() {var res = undefined;   try {var Ref = new ActionReference();   ref.putProperty (1349677170, 1315774496);   ref.putIndex (1283027488, 0);   executeActionGet (ref) .getString (1315774496);   RES = true;   } catch (e) {res = false} return res; }; function makeActiveByIndex (idx, forceVisible) {try {var desc = new ActionDescriptor();}   Var ref = new ActionReference();   ref.putIndex (charIDToTypeID ("Lyr"), idx) desc.putReference (charIDToTypeID ("null"), ref);   desc.putBoolean (charIDToTypeID ("MKV"), forceVisible);   executeAction (charIDToTypeID ("TPCV"), desc, DialogModes.NO);   } catch (e) {return-1 ;}} ; function getNumberOfLayer() {var Ref = new ActionReference();   ref.putEnumerated (charIDToTypeID ("Dcmn"), charIDToTypeID ("Ordn"), charIDToTypeID ("Trgt"));   var / / desc = executeActionGet (ref);   var numberOfLayer = desc.getInteger (charIDToTypeID ("NmbL"));   Return numberOfLayer; }; function getLayerNameByIndex (idx) {var Ref = new ActionReference();   ref.putProperty (charIDToTypeID ("Rprp"), charIDToTypeID ("Nm"));   ref.putIndex (charIDToTypeID ("Lyr"), idx);   Return executeActionGet (Ref) .getString (charIDToTypeID ("Nm")) ;} ;

    This script shows an alert for each layer / group name that corresponds to-is to find the layers / groups!

    Now I need the layers / groups to simultaneously show or hide depending on their status.


    I found a script that toggles the visibility of a specific name (in this case "GRID") here:

    Photoshop-grid-enable/disable/turn Grid.jsx to master · squarefrog/photoshop-grid-toggle · GitHub

    var gridName = "GRID"; Implement what you call your grid layer together. function toggleGridLayer() {if (app.documents.length > 0) {var gridLayer = app.activeDocument.layerSets.getByName (gridName);}}         gridLayer.visible =! gridLayer.visible;     toggleGridLayer()}};

    Essentially, I want to merge the tilting head of visibility script in the script of the regular expression. Any help would be great. Thanks in advance!


    Note: The use of CC PS 2015

    This script is all on one line and hard to see where are the separate lines. If you want the code to turn on or off a layer, you can use:

    var docLayer = app.activeDocument.activeLayer;
    docLayer.visible=docLayer.visible==false;
    
  • [request] make image in the video clip

    I made an image loader using this code below, if I want this clickable map when his compilation, what I supposed to do? Please...

    kartu var = new card();

    var a: int = 0;

    var count: int = 0;

    While (< 11)

    {

    getImage (kartu.player [a], counter, one);

    a = a + 1;

    Counter = counter + 65;

    }

    function getImage (name, meter, ac)

    {

    var url: URLRequest = new URLRequest ("dekKartu /" + name + ".png");

    var loader: Loader = new Loader();

    Loader.x = counter;

    Loader.y = 560;

    Loader.Load (URL);

    addChild (loader);

    Never recommended nested named functions.  Pull the function test on its own.

    You could aim anything blindly targeting just "x" looks like it is targeting anything that contains all of the cards, which is why they are all pass. ""  Try changing the test function to be...

    function test(evt:MouseEvent):void

    {

    MovieClip (evt.currentTarget) .x += 5;

    }

  • script request: pass the predefined parameters

    http://www.vertexbee.com/pics/vBee_PSswitchPresets.jpg

    Martin

    Some tools are not selectable via an action and may be preferable to create another script with the necessary tools, in the meantime it would be nice that it loop through all of the ABR?

    main();
    function main(){
    var abrPath = Folder(app.path+"/Presets/Brushes");
    var abrFiles = abrPath.getFiles("*.abr");
    //Reset Custom Options.
    //app.eraseCustomOptions( '4a01e9f0-cc9f-11df-bd3b-0800200c9a66' ); return;
    var Prefs = {};
    try{
    var desc1 = app.getCustomOptions('4a01e9f0-cc9f-11df-bd3b-0800200c9a66');
    Prefs = eval(desc1.getString(0));
    }catch(e){
    Prefs.ABR=0;
    Prefs.ABRCount = abrFiles.length;
    var desc2 = new ActionDescriptor();
    desc2.putString(0, Prefs.toSource());
    app.putCustomOptions('4a01e9f0-cc9f-11df-bd3b-0800200c9a66', desc2, true );
        }
    if(Prefs.ABR == Prefs.ABRCount) Prefs.ABR = 0;
    loadABR(abrFiles[Number(Prefs.ABR)]);
    Prefs.ABR++;
    var desc2 = new ActionDescriptor();
    desc2.putString(0, Prefs.toSource());
    app.putCustomOptions('4a01e9f0-cc9f-11df-bd3b-0800200c9a66', desc2, true );
    }
    function loadABR(fileName) {
        var desc10 = new ActionDescriptor();
            var ref10 = new ActionReference();
            ref10.putProperty( charIDToTypeID('Prpr'), charIDToTypeID('Brsh') );
            ref10.putEnumerated( charIDToTypeID('capp'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
        desc10.putReference( charIDToTypeID('null'), ref10 );
        desc10.putPath( charIDToTypeID('T   '), new File( fileName) );
        executeAction( charIDToTypeID('setd'), desc10, DialogModes.NO );
    }
    

Maybe you are looking for