Alpha Channel on the Web?

I know this is a shot in the dark, but are there any QuickTime codecs which would allow for an alpha channel on embedded web content? I want to put a QuickTime movie (a keyed out Narrator) onto a large webpage background image. Suggestions? Thanks!

You may be thinking of a "skin track" movie. It takes whatever shape you want.
They work best when played back using the QuickTime Player instead of the browser plug-in.
You may also just want to add the image to the movie. Make it its own "layer" and play your "motion" movie on top of it.
Open your image with QT Pro, select all and add it "scaled" to all of the motion movie. Adjust its layer and size in the Movie Properties window.
One of my skin track movies:
http://homepage.mac.com/kkirkster/C/index.html

Similar Messages

  • Why can I no longer export alpha channels in the new FCPX update (10.0.6)?

    While the new update is rich with new goodies- I am having some issues doing some things.  My main concern is the inability to export alpha channels in the 10.0.6 updated version of FCPX.
    I followed the following steps, same as before the update.
    I used the Keying effect to remove the greenscreen and did some cleanup using the "sample color" refining tool.
    I cropped and resized the clip so that the actor is the correct size for my clip.
    Now it looks great in FCPX, except that I now need to put that footage into Motion 5 and do some motion tracking and match move.
    I export the keyed clip as Apple Pro Res 4444
    Now when I import that file into Motion 5 everything that is supposed to be transparant is black! 
    Is there an additional setting in the new version that I need to fix in order to export alphas?  Is there a new way to do it?
    I am operating Mountain Lion, OSX Version 10.8.2 with a 2.66 GHz Quad-Core Intel Xeon processor. 
    Thank you so much!  This is a key element in almost all the projects I do and now I am stuck!

    You got me curious so had to test and validate some of the above, forgive me if I go a little OT in the process.
    Have you set your background to checkerboard, I find psycologically this makes a difference, though in exporting it does not...
    screen grab below, from 422 timeline, showing original, exported 444 and then imported file comp'd in and scaled down for differentiation in FCPX, note that the project render parameter is actually set to 422 NOT 444 as fox_m suggested, it still works.
    This one below shows the above scenario exported 444, with background set to black in pref's, note the overlap showing transparency, again in FCPX. This is purely to illustrate that the checkerboard and black backgrounds are not relevant, only that the 444 on export is relevant.
    Hopefully this illustrates that cropping and 444 exports are working.
    Tony

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

    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!

    OK, something must be wrong... but I don't find it!
    That's my whole code (resumed). I ommit some code (saving file code (not used) or main function, where I only call te "DoSomething" functions. You can see that I use layers. The DoReadContinue function is only used to show the preview.
    In the DoReadStart function I set the parameters for the layers (and the preview), and I fill the "data" and "layerName" params in the DoReadLayerContinue function. I hope you can understand the code!
    const int32 IMAGE_DEPTH = 32;
    SPBasicSuite * sSPBasic = NULL;
    SPPluginRef gPluginRef = NULL;
    FormatRecord * gFormatRecord = NULL;
    intptr_t * gMxiInfoHandle = NULL;
    MXIInfo* gMxiInfo = NULL;
    int16 * gResult = NULL;
    #define gCountResources gFormatRecord->resourceProcs->countProc
    #define gGetResources   gFormatRecord->resourceProcs->getProc
    #define gAddResource    gFormatRecord->resourceProcs->addProc
    CmaxwellMXI* cMax;
    static void DoReadPrepare (void){
        gFormatRecord->maxData = 0;
    static void DoReadStart(void){
        char header[2];
        ReadScriptParamsOnRead (); // override params here
      if (*gResult != noErr) return;
        // Read the file header
        *gResult = SetFPos (gFormatRecord->dataFork, fsFromStart, 0);
        if (*gResult != noErr) return;
        ReadSome (sizeof( header ) * 2, &header);
        if (*gResult != noErr) return;
      // Check the magic number for avoid no-mxi files
        int headerID = CheckIdentifier (header);
        if( headerID != HEADER_MXI ) *gResult = formatCannotRead;
      if (*gResult != noErr) return;
      // The file is OK. Let's continue to obtain the data of the image.
      cMax = new CmaxwellMXI( 0 );
      strlen((char*)gFormatRecord->fileSpec->name);
      gMxiInfo->filename = _strdup((char *)gFormatRecord->fileSpec->name + 1);
      bool res = cMax->getMXIIInfo(
                    (const char*)gMxiInfo->filename,
                    gMxiInfo->width, gMxiInfo->height,
                    gMxiInfo->burn, gMxiInfo->monitorGamma, gMxiInfo->iso,
                    gMxiInfo->shutter, gMxiInfo->fStop, gMxiInfo->intensity,
                    gMxiInfo->scattering,
                    gMxiInfo->nMultilightChannels, gMxiInfo->lightNamesList,
                    gMxiInfo->availableBuffersMask,
                    gMxiInfo->widthPreview, gMxiInfo->heightPreview,
                    gMxiInfo->bufferPreview);
      if(!res) return;
      // Check the available extra buffers
      int count = 0;
      if( gMxiInfo->availableBuffersMask & CmaxwellMXI::ALPHA_BUFFER ){
        // We will use that string to obtain later the desired extra buffer.
        gMxiInfo->extraBuffersList[count] = "ALPHA";
        gMxiInfo->hasAlpha = true;
        count++;
      else{
        gMxiInfo->hasAlpha = false;
      gMxiInfo->nExtraBuffers = count;
      switch( IMAGE_DEPTH ){
      case 8:
          gMxiInfo->mode = plugInModeRGBColor;
          break;
      case 16:
          gMxiInfo->mode = plugInModeRGB48;
          break;
      case 32:
          gMxiInfo->mode = plugInModeRGB48; //96 gives me an error
          break;
      // SET UP THE DOCUMENT BASIC PARAMETERS.
      VPoint imageSize;
      if( gFormatRecord->openForPreview ){
        // Preview always RGB8.
        imageSize.v = gMxiInfo->heightPreview;
        imageSize.h = gMxiInfo->widthPreview;
        gFormatRecord->depth = 8;
        gFormatRecord->imageMode = plugInModeRGBColor;
        gFormatRecord->planes = 3;
        gFormatRecord->loPlane = 0;
        gFormatRecord->hiPlane = 2;
        gFormatRecord->colBytes = 3;
        gFormatRecord->rowBytes = imageSize.h * gFormatRecord->planes;
        gFormatRecord->planeBytes = 1;
      else{
        // Configure the layers. All RGBA32.
        imageSize.v = gMxiInfo->height;
        imageSize.h = gMxiInfo->width;
        gFormatRecord->depth = IMAGE_DEPTH;
        gFormatRecord->imageMode = gMxiInfo->mode;
        gFormatRecord->layerData =
            2 + gMxiInfo->nMultilightChannels + gMxiInfo->nExtraBuffers;
        gFormatRecord->planes = 4; // RGBA.
        gFormatRecord->loPlane = 0;
        gFormatRecord->hiPlane = 3;
        gFormatRecord->planeBytes = IMAGE_DEPTH >> 3;
        gFormatRecord->rowBytes = imageSize.h * gFormatRecord->planes * ( IMAGE_DEPTH >> 3 );
        gFormatRecord->colBytes = gFormatRecord->planes * ( IMAGE_DEPTH >> 3 );
        gFormatRecord->transparencyPlane = 3;
        gFormatRecord->transparencyMatting = 1;
        gFormatRecord->blendMode = PIBlendLinearDodge;
        gFormatRecord->isVisible = true;
      SetFormatImageSize(imageSize);
      gFormatRecord->imageHRes = FixRatio(72, 1);
      gFormatRecord->imageVRes = FixRatio(72, 1);
      VRect theRect;
      theRect.left = 0;
      theRect.right = imageSize.h;
      theRect.top = 0;
      theRect.bottom = imageSize.v;
      SetFormatTheRect(theRect);
      // No resources for now.
      if (sPSHandle->New != NULL) gFormatRecord->imageRsrcData = sPSHandle->New(0);
      gFormatRecord->imageRsrcSize = 0;
        return;  
    /// Called for prewiew only.
    static void DoReadContinue (void){
        // Dispose of the image resource data if it exists.
        DisposeImageResources ();
      if( gFormatRecord->openForPreview ){   
        VPoint imageSize = GetFormatImageSize();
        gFormatRecord->data = gMxiInfo->bufferPreview;
          if (*gResult == noErr) *gResult = gFormatRecord->advanceState();
        if( gFormatRecord->data != NULL ){
          delete[] (Crgb8*)gMxiInfo->bufferPreview;
          gMxiInfo->bufferPreview = NULL;
          gFormatRecord->data = NULL;
      // De momento nos olvidamos de los icc profiles [TODO]
        //DoReadICCProfile ();
    static void DoReadFinish (void)
        // Dispose of the image resource data if it exists.
        DisposeImageResources ();
        WriteScriptParamsOnRead (); // should be different for read/write
      // write a history comment
        AddComment ();
      // Clean some memory.
      if( gMxiInfo->lightNamesList != NULL ){
        for( unsigned int i = 0; i < gMxiInfo->nMultilightChannels; i++){
          if( gMxiInfo->lightNamesList[i] != NULL ){
            delete[] gMxiInfo->lightNamesList[i];
            gMxiInfo->lightNamesList[i] = NULL;
        delete[] gMxiInfo->lightNamesList;
        gMxiInfo->lightNamesList = NULL;
      if( gMxiInfo->bufferPreview != NULL ){
        delete[] gMxiInfo->bufferPreview;
        gMxiInfo->bufferPreview = NULL;
      if( gMxiInfo->filename != NULL ){
        delete[] gMxiInfo->filename;
        gMxiInfo->filename = NULL;
      if( cMax != NULL ){
        delete cMax;
        cMax = NULL;
    static void DoReadLayerStart(void){
      // empty
    static void DoReadLayerContinue (void){
      int32 done;
        int32 total;
      VPoint imageSize = GetFormatImageSize();
      // Set the progress bar data
      done = gFormatRecord->layerData + 1;
      total = gMxiInfo->nMultilightChannels + gMxiInfo->nExtraBuffers + 2;
      // Dispose of the image resource data if it exists.
      DisposeImageResources ();
      uint32 bufferSize = imageSize.v * gFormatRecord->rowBytes;
      int nPixels = gMxiInfo->width * gMxiInfo->height;
      char* lightName = NULL;
      // SET THE BLACK BACKGROUND
      if( gFormatRecord->layerData == 0 ){
        gFormatRecord->data = (void*)new byte[bufferSize];
        for( int i = 0; i < nPixels; i++ ){
          ((float*)gFormatRecord->data)[ i * 4 ]     =
          ((float*)gFormatRecord->data)[ i * 4 + 1 ] =
          ((float*)gFormatRecord->data)[ i * 4 + 2 ] = 0.0;
          ((float*)gFormatRecord->data)[ i * 4 + 3 ] = 1.0;
        // Set the layer name.
        gFormatRecord->layerName = new uint16[64];
        gFormatRecord->layerName[0] = 'B';
        gFormatRecord->layerName[1] = 'a';
        gFormatRecord->layerName[2] = 'c';
        gFormatRecord->layerName[3] = 'k';
        gFormatRecord->layerName[4] = 'g';
        gFormatRecord->layerName[5] = 'r';
        gFormatRecord->layerName[6] = 'o';
        gFormatRecord->layerName[7] = 'u';
        gFormatRecord->layerName[8] = 'n';
        gFormatRecord->layerName[9] = 'd';
        gFormatRecord->layerName[10] = '\0';
      // LOAD THE LIGHT LAYERS
      else if( gFormatRecord->layerData < gMxiInfo->nMultilightChannels + 1 ){
        void* lightBuffer = NULL;
        void* alphaBuffer = NULL;
        byte foob;
        dword food;
        // Get the light buffer.
        bool res = cMax->getLightBuffer(
                               (char*)gMxiInfo->filename,
                               gFormatRecord->layerData - 1, IMAGE_DEPTH,
                               lightBuffer,
                               gMxiInfo->width, gMxiInfo->height, lightName);
        if(!res){
          *gResult = readErr;
          return;
        if( gMxiInfo->hasAlpha ){
          // Get the alpha buffer.
          res = cMax->getExtraBuffer(
                                (char*)gMxiInfo->filename,
                                "ALPHA", IMAGE_DEPTH, alphaBuffer,
                                food, food, foob);
          if(!res){
            *gResult = readErr;
            return;
        else{
          alphaBuffer = (void*)new float[ gMxiInfo->width * gMxiInfo->height * 3 ];
          for( int i = 0; i < nPixels; i++ ){
            // Only need to set the red channel.
            ((float*)alphaBuffer)[ i * 3 ] = 1.0;
        // Put them together.
        gFormatRecord->data = (void*)new byte[bufferSize];
        for( int i = 0; i < nPixels; i++ ){
          ((float*)gFormatRecord->data)[ i * 4 ]     = ((float*)lightBuffer)[ i * 3 ];
          ((float*)gFormatRecord->data)[ i * 4 + 1 ] = ((float*)lightBuffer)[ i * 3 + 1 ];
          ((float*)gFormatRecord->data)[ i * 4 + 2 ] = ((float*)lightBuffer)[ i * 3 + 2 ];
          ((float*)gFormatRecord->data)[ i * 4 + 3 ] = ((float*)alphaBuffer)[ i * 3 ];
        delete[] (float*)lightBuffer;
        delete[] (float*)alphaBuffer;
        // Set the layer name.
      //LOAD THE EXTRA CHANNELS
      if( ... ){
      //READ THE RENDER BUFFER
      if( ... ){
      // User can abort.
      if (gFormatRecord->abortProc()){
          *gResult = userCanceledErr;
          return;
      // Commit the layer.
      if (*gResult == noErr) *gResult = gFormatRecord->advanceState();
      // Update the progress bar.
      (*gFormatRecord->progressProc)( done, total );
      // Free memory.
      if( gFormatRecord->data != NULL ){
        delete[] (float*)gFormatRecord->data;
        gFormatRecord->data = NULL;
      if( lightName != NULL ){
        delete[] lightName;
        lightName = NULL;
    static void DoReadLayerFinish (void)
      // Nothing to do.
    And that's the image that I obtain loading a 8 layer image:
    The layers have transparency (when I set "transparencyPlane" to  -1, or 0, or 1, or 2, or 3, or 4....., I got the same result!). The blending mode is still "normal". I had set it to "linear dodge" The "isVisible" param works OK.
    Alpha 1 is still black.
    Is possible that I need to set something in the .r file? I had to add "FormatLayerSupport { doesSupportFormatLayers }," to manage layers, for instance.

  • I need to mask video, and maintain the alpha channel for the masked video!

    I wanted to know how to mask video in Final Cut Pro 6, I am sure there are options to do so, can someone please help me with getting started. I want to be able to mask video and maintain an alpha channel.
    Thanks in advance,
    Sebastian

    Did you get anything to show up on the tv?  If you got a aura wallpaper then it's working.
    If you did then it's in extended desktop mode or a logical extension of the desktop to the right.  Drage the player off the right side of the screen to the right and it will appear on the TV.
    All the options are in System Preferences > Displays > Arrangement tab.

  • OUTPUT PNG W/ Alpha for the web?

    Hello to everyone.
    I'm hoping someone can shed some light on this...
    I need to output my file as a PNG with an ALPHA Channel for the web.  First, I created an alpha for my image, and then I tried to simply use the "save as" function and select the PNG format, but the ALPHA selection is grayed out.  I've also tried "the save for web function" and selected transparency, but when I reopen the file the alpha channel has dissappeared.  I know that it is possible to save an alpha channel to a PNG, but I can't seem to do it with Photoshop... Can anyone help?
    Thanks in advance.
    Bryce

    Hello Zeno Bokor
    Thanks for your reply.
    In fact, my client, who is using the images for a web game that they are developing, requested that the files have an Alpha channel.  They have explained that the alpha channel helps the video program understand what areas are transparent.
    I wish that it was just a case of transparency... It would be hell of a lot easier.
    Any ideas?
    Thanks again.
    bgub.

  • Combining the alpha channels?

    I'm missing something really obvious here, but what is it?
    I want to have a subject casting shadows on a moving clouds background. Here's the clip so far using a method that doesn't works quite well enough :
    The shadow doesn't work on the darker parts of the cloud. That's not really so much of a prob in 2D, but this is a stereo 3D project and having the shadow intermittently disappear looks odd.
    So, to create a shadow that I can then insert between the two Images, I need to combine the alpha channels from the two videos (one created using green as a key, the other the blue sky).
    How do I do that? I bet it's really obvious!
    Cheers! !http://forums.adobe.com/images/emoticons/wink.gif|___jive_emoticon_name=wink|jivemacro=emoticon|class=jive_macro jive_emote|src=http://forums.adobe.com/images/emoticons/wink.gif!
    Currently using CS5

    Use the Channel Combiner effect or things like Shift Channel to expose multiple channels and merge them differently. Or you could use a pre-comp that has duplicates of your stuff and then use matte and stencil blending modes. It's really just a matter of using one on top of the ther and combining them sensibly...
    Mylenium

  • Flash Player for FLV files with alpha channel encoded

    My goal is to play the the transparent background flash video on the bottom right hand corner similar to the video on this website : http://www.dropshipblueprint.com/
    I already have the FLV file with alpha channel encoded.  I was made to understand I will need a special flash player that can read alpha channel in the flv file to make the background transparent? Is this correct? If yes, then how to accomplish this or where do I get that player, maybe opensourece player?  If the player is not a solution then how do I accomplish my end objective taking into consideration I have the FLV file with the alpha channel encoded.  Thanks for your help. Sam

    Sam,
    Welcome to the forum.
    Where do you need to play this "sprite" (the name for such a Flash video)?
    If you need to add that to a Video, then there could be a few challenges in PrE.
    If you need to add it to a Web site, then Flash Player (free from Adobe) should be able to display that.
    Can you please give us just a bit more info, on how you wish to use the sprite?
    Good luck,
    Hunt

  • Export PNG images with alpha channel from flash

    Hi,
    I have this FLA with animation and when played, the animation has alpha channel. I can’t understand why when I look in the library I see the frames without the alpha channel and also when I try to export/extract the image again the image don’t have alpha channel.
    How is it that in flash this image has alpha channel and how to get it out like that into PNG?
    Here is the link to download the FLA:
    http://download759.mediafire.com/nb749r29220g/e0636ab0ru6ouoa/Untitled-1.fla

    "when played, the animation has alpha channel"
    how are you playing the animation? control/enter in Flash, Publishing to a Web page or what?
    How can you tell that the animation has the alpha channel? What exactly are you seeing?
    What is the aniimation? a series of images, one image moving? Are teweens imvolved?
    " when I try to export/extract the image again the image don’t have alpha channel"
    How are you exporting the image? is it a single image? or a series of frames that makes up an animation?
    What was the file format of the original image? you brought that image into Flash and animated it? Now you want to export as a .png with transparency?
    Have you ever tried to export a  simple .png before so that you see and understand the dialog box that pops up during export? are you chosing "24 bit with alpha channel" in the "Colors" choice?
    For those of us who may not want to download your file, please provide a more detailed describtion of everything related to this question.
    Best wishes,
    Adninjastrator

  • How to render out with an alpha channel

    I want to render out a QuickTime animation so I can layer it over some video in Final Cut Pro. How do I get an Alpha channel in the video. Have tried the Animation Codec but that doesn't do it. Which codec should I use?
    Kevin

    For more information, see these sections of After Effects Help on the Web:
    "About alpha channels and mattes"
    "Alpha channel interpretation: premultiplied or straight"
    "Output module settings"

  • Import QuickTime with Alpha channel into Flash CS3

    Is it possible to import a QuickTime movie with alpha channel into an FLA and have the FLA recognize the Alpha channel? When I've done this, it just shows opaque black instead of an alpha channel. I need that black to be transparent so I can see the layers below the video layer.
    Thanks in advance for any help.

    I don't know the answer to your question.
    Do you have a video player where you can verify that the alpha channel in the video is displaying as you expect?.... that is, the background is transparent?
    I have used flv files with alpha and a NetStream vid player to overlay Flash video on a Web page.... but not directly in the timeline.:
    http://www.mrfilmbiz.com/
    the walkon... could have had other action (like Flash artwork) going on in the background... but that may not really be what you are looking for.
    But lacking any other solutions, you could have your alpha channel vid file playing in one Flash file over the top of a second Flash file doing the artwork stuff.
    Adninjastrator

  • Better Alpha channel handling

    I've asked for this a lot: alpha channel saving with PS is terrible, and could use an update. And today, I was embarrassed by a bug that caused our game engine to perform poorly as a result of the way Photoshop handles the alpha channel.
    The bug: make a 1024x1024 canvas, give it an opaque alpha channel (100% white, every pixel), then Image Size it down to something smaller, like 128x128. Now look at your alpha channel: grey pixels all along the border. ARRGGGHHH!!!1!1! It interpolated, I'm sure, using black alpha outside the canvas that doesn't actually exist, changing, in a powerful, fundamental way, the nature of the alpha channel. Video cards care about this stuff: 99.9% opaque is not 100% opaque. This is terrible.
    The request: That PS intelligently offer better defaults when saving an image with an alpha. Right now, it offers, "What was the last bit depth you saved an image to?" Regardless of the fact that the previous image may have no relationship to the following image being saved, the default offering is always "what I did last time". This enables very easy pruning of alpha channels that should be there, or adding opaque alpha channels that shouldn't be there, bloating the file size.
    I'd like PS to determine if an alpha channel is present, and base its default choice on that. If one is present, default to 32-bits. If an alpha channel si not present, default to 24-bits. That easy.
    If multiple alpha channels are present, I'd like a dropdown menu to pick which one I want. Right now, if you save a PSD with multiple alpha channels to a 32-bit TGA, it throws all alpha channels away, and saves the image with a solidly opaque alpha channel, the choice no one asked for.
    For texture work, or works where the graphics card is the destination, not the printed page, this cavalier handling of alpha channels is definitely not sustainable.
    I'd love to never have to ask for this again.

    Generally speaking the resize of an image on a layer in which the canvas is exactly the size of the data will result in transparency peeking in around the edge (i.e., I'm agreeing with you here, just using Photoshop terms).  I've always thought this was kind of poorly thought-out too.  As you say, the algorithm must default to using 0 vs., say, replicating (or "clamping") to the alpha of the pixels right on the edge.
    I suppose theoretically, the thinking is that if you were to EXPAND the canvas, the area around the image would be transparent anyway, and a subsequent resampling would then have the same result as the above.
    Knowing this, one way to work around the problem would be to create a slightly larger image, then Canvas Size it down to your intended resolution.  That way there's layer data beyond the edges with which the resizing algorithm can work.  I realize that's probably not a practical solution in general, but a trick to keep up your sleeve if you really do need that 128 x 128 image with alpha solid to the edge.
    -Noel

  • ImageIO PNG Writing Slow With Alpha Channel

    I'm writing a project that generates images with alpha channels, which I want to save in PNG format. Currently I'm using javax.ImageIO to do this, using statements such as:
    ImageIO.write(image, "png", file);
    I'm using JDK 1.5.0_06, on Windows XP.
    The problem is that writing PNG files is very slow. It can take 9 or 10 seconds to write a 640x512 pixel image, ending up at around 300kb! I have read endless documentation and forum threads today, some of which detail similar problems. This would be an example:
    [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6215304|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6215304]
    This surely must be resolvable, but after much searching I've yet to find a solution. If it makes any difference, I ONLY want to write png image, and ONLY with an alpha channel (not ever without), in case there are optimisations that that makes possible.
    If anyone can tell me how to address this problem, I'd be very grateful.
    Many thanks, Robert Redwood.

    This isn't a solution, but rather a refinement of the issue.
    Some of the sources I was reading were implying that the long save time might be due to a CPU heavy conversion process that had to take place before the BufferedImage could be saved. I decided to investigate:
    I loaded back in one of the (slowly) saved PNG images using ImageIO.read(file). Sure enough, the BufferedImage returned differed from the BufferedImage I had created. The biggest difference was the color model, which was DirectColorModel on the image I was generating, and was ComponentColorModel on the image I was loading back in.
    So I decided to manually convert the image to be the same as how it seemed to end up anyway. I wrote the following code:
          * Takes a BufferedImage object, and if the color model is DirectColorModel,
          * converts it to be a ComponentColorModel suitable for fast PNG writing. If
          * the color model is any other color model than DirectColorModel, a
          * reference to the original image is simply returned.
          * @param source The source image.
          * @return The converted image.
         public static BufferedImage convertColorModelPNG(BufferedImage source)
              if (!(source.getColorModel() instanceof DirectColorModel))
                   return source;
              ICC_Profile newProfile = ICC_Profile.getInstance(ColorSpace.CS_sRGB);
              ICC_ColorSpace newSpace = new ICC_ColorSpace(newProfile);
              ComponentColorModel newModel = new ComponentColorModel(newSpace, true, false, ComponentColorModel.TRANSLUCENT, DataBuffer.TYPE_BYTE);
              PixelInterleavedSampleModel newSampleModel = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, source.getWidth(), source.getHeight(), 4, source.getWidth() * 4, new int[] { 0, 1, 2, 3 });
              DataBufferByte newDataBuffer = new DataBufferByte(source.getWidth() * source.getHeight() * 4);
              ByteInterleavedRaster newRaster = new ByteInterleavedRaster(newSampleModel, newDataBuffer, new Point(0, 0));
              BufferedImage dest = new BufferedImage(newModel, newRaster, false, new Hashtable());
              int[] srcData = ((DataBufferInt)source.getRaster().getDataBuffer()).getData();
              byte[] destData = newDataBuffer.getData();
              int j = 0;
              byte argb = 0;
              for (int i = 0; i < srcData.length; i++)
                   j = i * 4;
                   argb = (byte)(srcData[i] >> 24);
                   destData[j] = argb;
                   destData[j + 1] = 0;
                   destData[j + 2] = 0;
                   destData[j + 3] = 0;
              //Graphics2D g2 = dest.createGraphics();
              //g2.drawImage(source, 0, 0, null);
              //g2.dispose();
              return dest;
         }My apologies if that doesn't display correctly in the post.
    Basically, I create a BufferedImage the hard way, matching all the parameters of the image I get when I load in a PNG with alpha channel.
    The last bit, (for simplicity), just makes sure I copy over the alpha channel of old image to the new image, and assumes the color was black. This doesn't make any real speed difference.
    Now that runs lightning quick, but interestingly, see the bit I've commented out? The alternative to setting the ARGB values was to just draw the old image onto the new image. For a 640x512 image, this command (drawImage) took a whopping 36 SECONDS to complete! This may hint that the problem is to do with conversion.
    Anyhow, I got rather excited. The conversion went quickly. Here's the rub though, the image took 9 seconds to save using ImageIO.write, just the same as if I had never converted it. :(
    SOOOOOOOOOOOO... Why have I told you all this?
    Well, I guess I think it narrows dow the problem, but eliminates some solutions (to save people suggesting them).
    Bottom line, I still need to know why saving PNGs using ImageIO is so slow. Is there any other way to fix this, short of writing my own PNG writer, and indeed would THAT fix the issue?
    For the record, I have a piece of C code that does this in well under a second, so it can't JUST be a case of 'too much number-crunching'.
    I really would appreciate any help you can give on this. It's very frustrating.
    Thanks again. Robert Redwood.

  • Printing swf error (no alpha channel?)

    Hi,
    I don't know if this has been covered before but I have tried the following:
    Printing to PDF via the print menu from the swf
    and
    Printing to paper via the print menu from the swf
    In both cases, the images that are on screen are PNGs created as a PNG sequence from After Effects.  They contain alpha channels and the background of the swf is non-white.  However the bounding box of the image gets printed as white, so I have  a sequence of overlapping white regions, some of which occlude the image beneath.  With alpha channels on the monitor, this is not apparent, but when on paper or in PDF format the occlusion is clear.  I don't mind the white background; however I cannot deal with the occlusion.  How can I solve this?
    Sincerely,
    -markerline

    Eureka!! That works better than a vacuum cleaner.  Only problem is I was using the AS3 reference and some of the PrintJob examples that were listed threw errors so I had to use the final example:
    package
        import flash.printing.PrintJob;
        import flash.display.Sprite;
        public class BasicPrintExample extends Sprite
            var myPrintJob:PrintJob = new PrintJob();
            var mySprite:Sprite = new Sprite();
            mySprite.graphics.beginFill(0x336699);
        mySprite.graphics.drawCircle(100, 100, 50);
            public function BasicPrintExample()
                if (myPrintJob.start()) {
                try {
                    myPrintJob.addPage(mySprite);
                catch(e:Error) {
                    // handle error
                myPrintJob.send();
    I did away with the package and the class and just called the function as a mouse event for a print-button.  I'm not sure why the if(myPrintJob.start()) call works because nowhere am I declaring the print job to start.  I guess that's something that happens automatically?

  • Photoshop CS6 using javaScript to truncate alpha channel name

    Hello,
    I'm a production artist and I work with PSD files that were created in Adobe Scene7 Image Authoring Tool. These PSDs contain a background layer along with 1-20 alpha channels. My script has to make a new blank layer for every alpha channel in the document. Then it fills the new layer with light gray. So far, my code accomplishes this. However, I'd like to apply the name of the alpha channel to the layer, but I need the name to be truncated. Every alpha channel starts with one or more characters followed by a backslash and then finishes with one or more characters. Here's an example:
    An alpha channel might be named:  Floor\floor
    In this example I need my layer name to be just:  floor. This means all character to the left of the backslash, including the backslash itself needs to be discarded. I was using the subSring() statement to do this. When I try to step through the code, line by line in ExtendScript, I immediately get an error that says Unterminated String Constant and Line 31 of my code is highlighted. I suspect it doesn't like the way I wrote the backslash character, although I surrounded it in double quotes to define it as a string.
    Can anyone tell me why I'm getting this error?
    Below is my code with lots of comments to walk you through the process. I wrote where the error occurs in red type.
    I'm new to JavaScript so I'm not sure my while loop is accurate.
    #target photoshop
    // The #target photoshop makes the script run in PS.
    // declare variable to contain the active document
    var myDoc=app.activeDocument;
    // declare variable to contain the number of alpha channels, excluding the RGB channels
    var alphaChan = myDoc.channels.length - 3;
    alert(alphaChan + " alpha channels exist");
    // create loop to make new layers based on number of alpha channels, fill layer with gray and apply alpha channel name to new layer
    for (a=0 ; a<alphaChan ; a+=1){
    // make new blank layer
    myDoc.artLayers.add();
    // fill blank layer with gray
    var color = new SolidColor();
    color.rgb.red = 161;
    color.rgb.green = 161;
    color.rgb.blue= 161;
    myDoc.selection.fill(color);
    //variable stores alpha channel name
    var alphaName = myDoc.channels[3+a];
    // variable stores lenght of alpha channel name
    var lz = alphaName.length;
    // declare index variable to initialize position of 1st  character of alpha channel name
    var x= 0 ;
    // truncate alpha channel name by removing all characters preceding the "\" symbol
    while (alphaName.subString(x) != "\"){          (ExtendScript gives an error for this line and highlights the backslash and surrounding quotation marks)
        alphaName = alphaName.subString((x+1),z);
        x+=1;
        z-=1;
    return alphaName;
    // remove the backslash from alpha channel name
    alphaName = alphaName.subString((x+1),z);
    //  apply truncated alpha channel name to corresponding layer
    myDoc.artLayers[a].name = alphaName;

    while (alphaName.subString(x) != "\"){ 
    should be
    while (alphaName.subString(x) != "\\"){ 

  • Making a PDF with an image that has both spot colour channel and alpha channel

    Hi I have a logo that was supplied to us as a PSD it has a transparent background, it also has a pantone colour channel. I have made a alpha channel from the transparent background as well.
    The graphic looks fine in InDesign (alpha channel selected in the import options), ie the background is transparent.
    But when we try to make a Hi Res PDF the result is that the graphic is on a solid white background.
    If I go back to the PSD and merge the spot channel with so that it is just CMYK and try again the PDF is fine, but we obviously loose the spot colour.
    How do you make a PDF with a transparent PSD that has a spot colour?

    You know that annoying response from support staff? "We cannot replicate your issue". Well....
    I created a PSD in CS5, with a bunch of process stuff, then loaded a spot color channel and painted in some pawprints using Pantone 172C:
    Saved this as a PSD file, default settings (maximize compatibility on, but it doesn't make any difference in this situation).
    Created a new InDesign document in CS5, added a gradient and some text, then placed the PSD.  ID understands the PSD has an inbuilt background so there's no need to bother with a dedicated alpha mask:
    Exported from ID using the High Quality Print option (PDF/1.4, which keeps the live transparency):
    Re-exported to PDF/X-1a (based on PDF/1.3 which flattens transparency) - looks exactly the same. In all cases the spot channel is intact and the see-through regions of the PSD are maintained.

Maybe you are looking for

  • Button Controls Disappearing

    This is an FYI... I've had a problem with buttons disappearing when using CFormView.  The same problem as discussed in the knowledgebase link below. http://digital.ni.com/public.nsf/websearch/862567530005F09F86256726006E261F?OpenDocument I found that

  • BAPI_SHIPMENT_CREATE Vehicle?

    Hello everyone. I've faced the problem: in the set of parameters of FUNCTION BAPI_SHIPMENT_CREATE i can't find which exactly place to pass "VEHICLE" parameter (see transaction VT01N ). Does anyone have idea to solve this problem? Sincerly yours, Long

  • Has anyone else had issues saving files should hard drive issue force reinstall of Story?

    In theory there should be a way to protect one's work offline to one's local hard drive.  No one has told me what I've done wrong, nor what to do to get files back.  I saved frequently to an external hard drive, saved using the procedure of "save now

  • The edit option in recent call's missing

    hi. I tried everything but it doesn't appear. I bought my phone 2 weeks ago and it never had the edit option in the recent call's menu. I tried to reinstall the software but no success...:( any ideas?

  • Where am I placed in the Industry?

    Hey all, Just coming towards the end of my preperations for The Dreamweaver CS5 ACA Exam. Once I have passed this (which I'm sure of "fingers crossed") having a good grasp of photoshop aswell, will the Industry take me on as a Junior front-end Web De