Cam Image Push

I just switched to using iWeb as my home page. I have a web cam that I use a PC to push the image (hourly) to a specific folder through FTP. Is there an iWeb FTP address that I can push an image to? Any other ideas on how to use an iWeb page to support a web cam?
Dual 2.3 GHz PowerPC G5   Mac OS X (10.4.9)   4.5 GB Ram, 250 GB HD GeForce 7800GT

I just switched to using iWeb as my home page. I
have a web cam that I use a PC to push the image
(hourly) to a specific folder through FTP. Is there
an iWeb FTP address that I can push an image to?
iweb can't do anything to/with server side functions.
when you have a camera and want to upload the images from your camera to your host, that is up to you. I imagine that your set up and data path is something like this:
camera --> computer --> some sort of capture SW --> FTP SW --> to your host.
iweb has no control over the above description.
Any
other ideas on how to use an iWeb page to support a
web cam?
When you work out the uploading process (as described above), you can have your page refresh/reload the image, ie:
http://mthamilton.ucolick.org/hamcam/
the above page refresh/reload once every 4 minnutes or so....

Similar Messages

  • Windows XP can no longer "see" my iPhone as a camera/imaging device

    can't sync photos from iPhone to computer; Windows XP doesn't even see it as a camera or imaging device. Weird, since iTunes is able to synch music/contacts.
    No matter how I check, Windows XP can't find the device:
    control panel --> scanners and cameras - nothing!
    My Computer --> devices with removable storage - no iPhone
    Computer Management--> Device Manager - no iPhone or scanner/camera

    UPDATE - I think I've resolved my problem and that it is related to having my iPhone "passcode locked".
    1. I connected it and unlocked the iPhone, synced music, but had the problems I noted in my original discussion post
    2. I disconnected the iPhone, closed iTunes, reopened iTunes and reconnected the iPhone (making sure it was NOT passcode locked before connecting it) -- everything works fine.
    3. now I can get back to my original issue, was to figure out how to get only my NEW iPhone captured photos to synch, or at least have them date ordered. But that's a subject for another post.
    BOTTOM LINE - passcode lock may be the key for those who are having problems with their PC not able to see the iPhone as a camera/imaging device

  • Satellite S70-A-11H web camera image quality is not good

    Hi,
    Running windows 8.1 which came with the laptop.
    New out of the box.
    As per title.
    I find the image quality of the camera image to be very grainy, poor color etc.
    When I start the web camera using the search bar on the right, it starts using the Microsoft application, when you scroll down to settings all that is available under settings/options is Photo aspect ratio, Grid lines, Location info.
    I have been in touch with Toshiba Tech support who advised to do a Laptop refresh, which I did.
    This made no difference.
    After which they asked me to find the Toshiba web camera application on the laptop, this should have been in the Program Files folder in the Toshiba folder.
    This application does not exist on my laptop.
    The tech checked the same model laptop that he had available, which I was told when he selected the web camera, it opened using the Toshiba Web camera application, not Microsoft.
    I have looked at other Toshiba laptops with web cameras, and found the image quality to be better. Unable to get to settings as these laptops were on display and in demo mode, hence locked down to some extent.
    I can't believe that a web camera in this day and age for this value of laptop to have such poor image quality. My digital camera from 10year ago has better image quality.
    I have checked through the laptop, and I do not have this application installed.
    I have checked for updated drivers and software for my laptop, and cannot find this application to be applicable for my laptop. Drivers etc appear to be up to date.
    I would like to know, do other users of this S series have any issue of camera image quality.
    When the camera is selected what application is being used, Toshiba or Microsoft.
    Is Toshiba web camera application applicable to Windows 8.1, as I cannot see it listed for 8.1
    Does this sound like a hardware fault or a application/software issue.
    Any direction or help on this matter would be appreciated, as I am getting to the point of returning this laptop for a refund.
    Thanks in advance.
    D.
    Yes, I have tried using the FORCE!

    > The tech checked the same model laptop that he had available, which I was told when he selected the web camera, it opened using the Toshiba Web camera application, not Microsoft.
    The Toshiba webcam application is available for Win 7 system but the Win 8 and Windows 8.1 system use the own Microsoft webcam application.
    > I have looked at other Toshiba laptops with web cameras, and found the image quality to be better.
    Different Toshiba notebooks are equipped with different webcams.
    Satellite S70-A-11H was equipped with a *0.92 mega pixel webcam*
    A Satellite A660 for example was equipped with an _1.3M mega pixel webcam_
    So there is a difference in webcam resolution

  • Two Simultaneous USB Camera Image Acquisition and Saving

    Hello everyone,
    Recently my friends and I have begun a project which requires the simultaneous acquisition of images from two independent USB cameras. Throughout our project research we have encountered many difficulties. The major problem appears to be how to successfully interface two USB cameras and properly save the image to a median for further processing down the road.
    Our first attempted at this was with the USB IMAQ drivers. Unfortunately, to our surprise, it does not support two independent and simultaneous camera acquisitions. To combat this problem we implemented a crude loop of closing a camera reference, then opening the other, acquiring an image, then closing, etc... This did provide us with functionality but was very inefficient, resulting insufficient acquisition speeds.
    Afterwards we began looking at other ways of capturing and writing the image, which are listed below.
    Various Acquisition Interfaces / Strategies
    USB IMAQ Driver - USB interfacing kit available for public download, (not officially supported by NI) zone.ni.com/devzone/cda/epd/p/id/5030
    Status - Abandoned because of the lack of dual web camera support
    Avicap32.dll - Windows 32 DLL responsible for all web camera communication, and other media devices.
    Status - Currently acquired two streams of video on the front panel but with no way of saving the images
    Directx - The core Windows technology that drives high-speed multimedia on a PC.
    Status - Currently researching.
    .NET - Microsoft .NET framework, possibly a valid interface to a video stream.
    Status - No development until further progress.
    We are still currently developing the Avicap32.dll code but the major bottleneck is the learning curve on the property nodes, library calling nodes, .NET and other references. So far it’s been a tedious effort of trying to understand example code and piece them together. As a former programmer of C I know this is not the proper way of writing code web I can’t seem to grasp how these functions work. (Property nodes, library calling nodes, .NET and other references). Learning this may allow us the knowledge to code a proper system. Does anyone know any good tutorials or learning material for such functions? So far my research has come up empty handed.
    We are currently working with these interfaces and other reference examples on the NI site. Unfortunately we cannot seem to properly integrate the code for our system. Does anyone know if this setup is even possible? Also, if anyone has any experience with similar systems and can offer advice, code snippets, or any other assistance it would be greatly appreciated.
    Our current projects will be posted below if you have any suggestions. (More will be added when I get to my desktop tomorrow)
    Two Camera Avicap32.dll - Currently stuck on how to save the image, various tweaks have gotten us stuck at this point ( will have another Avicap32.dll implementation posted tomorrow)
    USB Capture Example - This USB capture VI was an example that immediate had problems. We used it as a baseline for crude open-close camera image grabbing system. (Will also be posted tomorrow)
    Thanks for any help, it's much appreciated.
    Taylor S. Amarel
    Thanks,
    Taylor S. Amarel
    Learning is living.
    Co-Founder and CEO of http://3dprintingmodel.com/
    "If we did all the things we are capable of, we would literally astound ourselves."
    -Thomas Edison
    Attachments:
    Two Camera Avicap32.dll.zip ‏84 KB
    USB Capture Example.zip ‏17 KB

    Thanks for the information but that's not exactly what I'm looking for. I've been to that URL and read the information before. I don't mean to disparage you help but I'm looking for ways that I can successfully implement a functional system, not information on an unfunctional method. Maybe I was unclear before, I'm looking for any advice, knowledge or help on how to make this system properly work.
    Thanks, have a great day.
    Taylor S. Amarel 
    Learning is living.
    Co-Founder and CEO of http://3dprintingmodel.com/
    "If we did all the things we are capable of, we would literally astound ourselves."
    -Thomas Edison

  • Using iShuffle To Back-Up Digital Camera Images?

    Hi Gang:
    Is it possible to back-up digital camera images to my iShuffle without using a computer? Going directly to it somehow?
    Thank you, Glenn

    Simon,
    Time Machine uses a lot of internal tools within the system files, so it's never a good approach to begin to fool it with duplicates, renamings the exact same names etc such tricks.
    Better handle TM the "official" straight way:
    Plug both external drives, and tell Time Machine through its normal Preferences, that you are now moving your TM backup routine to the other external drive.
    Let it do the first backup then one next, and then only, unplug the first drive so you can send it for repairs.
    When you get it back, use TM Preferences again to tell it to backup now back on the first drive again.
    That's what I would do personally, or another simple solution:
    set Time Machine OFF temporarily while the first drive is being repaired, and use
    SuperDuper!
    to make daily clones of your Mac on the temporary second drive.

  • How do i smooth out a shaking camera image?

    i am using fcp 4.5 and don't know how to steady a shaking camera image. it's a documentary project. also, does anyone know if 4.5 works with the "shake" software, or do i need to upgrade? thanks.
    G5   Mac OS X (10.4.8)   using FCP 4.5

    http://forums.creativecow.net/cgi-bin/newpage_wrapper.cgi?forumid=%3CFORUMID%3E&page=http://www.creativecow.net/articles/ mench_michael/smoothcam/index.html
    G4 Dual 1 GHz/1.5 ram/Lacie 500(FW) FCPHD 5.1.1   Mac OS X (10.4.7)   HELPFUL? SOLVED?

  • Cannot remotely view camera image of WCS54CGA

    I have wireless camera WVC54CGA.  It is wirelessly connected to my Netgear router with WEP encoding.  I can view the camera image via the camera utility.  I can also view the image with my IE8 browser using the OCX plugin while at home.  However when I go to a remote WIFI hotspot to test remote viewing I am not able to connect to:
     http//----camera ipaddress--  .
     I am using Comcast as my ISP.  The camera IP address always comes up as the same value when I power up.  So I do not believe I need to set up DDNS.  I had not done the following on my first remote test.
     I now see comment s about setting up port forwarding in my router for ports 1024 and 80 and setting these ports for the camera.  Going into the router I added port forwarding for the http name with the camera IP address.  In so doing it selects 80 for the start and ending addresses.  I cannot seem to set up another port.  In the camera setup I set “Enable ” (for http/web connections).  It seemed to select port 1024.  I am not sure I am doing the correctly. Can some one help?
    Solved!
    Go to Solution.

    When you login to the Camera Setup page, You need to click on the "Advanced Configuration", and then you need to click on "Options" tab. Under Options tab you will find "Alternate Port" By default it will be Disable, So you need to Enable it , and By Default the Port No will be 1024 and you need to click on Save Settings.
    Now you need to login to the Setup page of your Router and click on "Application and Gaming" tab  and you need to Open the Port 1024 and 80 Pointing towards your Camera IP. 
    Under Application and Gaming Tab, you need to click on "Port Forwarding"
    Application Name              Start Port         End Port        Protocol         IP address         Check BOX.
    Camera                             80                      80                BOTH         Camera IP              Enable
    Camera 1                         1024                  1024              BOTH         Camera IP               Enable
    Now you can click on Save Settings... 
    Once you are able to the same page, You need to click on "Status"  tab and below you will fine your Internet IP (WAN IP) . So note down your WAN IP.
    So using that WAN IP you can View your Camera from the Remote Location. 

  • Simultaneously trigger and display two camera images with two frame grabbers

    When I try to simultaneously trigger and display two camera images, each with their own frame grabbers, Labview is only able to display one of the images at a time.
    My hardware:
    Two Sony XC-EU50 cameras (not in sync with each other)
    NI-1410
    NI-1405
    My Software:
    Windows XP and Labview 7.1 with IMAQ
    I connect each camera to its own frame grabber.  Both frame grabbers are in the same computer.  I input a trigger into each frame grabber.  Both trigger signals are identical.  Trigger rate is only 0.2 Hz. 
    I want to display and save both images at the same time.  The program i put together only displays one image at a time.  The image that is displayed alternates from one camera to the other.
    Please help with any suggestions.
    Thanks.
    Shahab K.
    Attachments:
    TriggerTwoCameras.vi ‏137 KB

    Hi Shahab.
    Without having triggered two cameras connected to two NI boards with LabVIEW yet: This shouldn't be a limitation in LabVIEW.
    Updating two Image Display Indicators in one run of a while loop definitely works properly, so this cannot be the reason for the problem.
    Your code uses the IMAQ Snap.vi. This VI is not reentrant, so the both instances of this VI on your block diagram cannot execute at the same time.
    I could not find an appropriate example matching your scenario exactly. (Maybe someone else knows better?)
    I recommend to have a look at the examples in the "IMAQ Signal IO.llb" and do some copy and paste to get a VI that satisfies your requirements.
    The "Grab with two boards.VI" illustrates how to acquire images without using the not-reentrant "IMAQ Snap.VI".
    Hope this helps, Guenter
    P.S.: Do you know NI's Vision Forum? http://forums.ni.com/ni/board?board.id=200

  • Cannot import non-camera images onto mac

    I'm using the Xperia Z3 Compact with the 'Sony Bridge for Mac' software - I'm only using this software because no other software will even recognise the connected phone. It seems that software is the only way to import my images from the phone.
    HOWEVER my options seem to be "show camera photos only" or "show all photos". The "camera photos" exclude any images downloaded from apps, any edited images, any screenshots. The "all photos" lists a huge amount of images, so I can only assume it's including all kinds of temporary files - but it doesn't show thumbnails of any non-camera images. The program gives an error when I try to import any image without a thumbnail.
    Is there an alternative, better, EASIER way of getting all of my images onto my computer?!

    http://forum.xda-developers.com/showthread.php?t=2366587
    http://android.stackexchange.com/questions/35860/how-do-i-access-my-phone-not-my-sd-card-from-my-com...
    "I'd rather be hated for who I am, than loved for who I am not." Kurt Cobain (1967-1994)

  • Inverting the iSight Camera Image???

    Does anyone know of a way to invert the iSight camera image?
    Mounting the iSight where I have my G5 is proving a problem because it just fits under a cabinet shelf in our kitchen (This also forced me to buy the 17" version). This prevents me from using the normal options.
    My hope is to be able to flip the included table stand upside down and use the adhesive strip to mount on the underside of the shelf immediately to the left of my G5. The problem is the iSight video image is then upside down. Any ideas?
    Thanks!
    G5   Mac OS X (10.4.3)  
    G5   Mac OS X (10.4.3)  

    Mounts For Your iSight contains links to some alternative mounting suggestions and to the iGlasses software that can rotate your iSight's picture 180 degrees.

  • I find that after updating my ipad to ios8 banking applications to deposit funds no longer work. The camera image rotates from horizontal to vertical and cannot be corrected. Is this a new ios8 error. I tried two different bank applications for ipad.

    I find that after updating my ipad to ios8 banking applications to deposit funds no longer work. The camera image rotates from horizontal to vertical and cannot be corrected. Is this a new ios8 error. I tried two different bank applications for ipad.

    Hi, Thanks for that further bug description In Your Last Message That Describes The Problem I Am Having perfectly and is exactly the same for me.
    unfortunately that fix for my camera Powershot G6 does not work or apply as the view pictures switch is different on G6 is not usable during download as once you plug in DC/USB cable it turns off, and makes no diff and problem still exists exactly as you just described.
    thanks anyways "Selz Boy"
    it has been 17 days since apple promised to get back to me within 3-5 days hopefully with a solution, but I have still not heard from them.
    They blew me off, i guess, probably i will have to wait for new Yosemite OS update, which they pre-warned me could take as much as 6 months.
    I cannot believe apple released this new update with such major bug issues for camera downloads and that horrible "Photos" pgm which has all sorts of downgrades in features, usefulness and new bugs compared to iPhotos which I just finally got used to and was much better software.
    I am starting to lose faith in Apple and I am getting that Microsoft "FEEL" like I used to have when I was a PC user, which was why I originally switched to Apple  computers in first place.
    Oh well got my fingers crossed here.
    Thankfully the memory card reader solution  is working well, but cost me $45.

  • My iPhone 4 camera images have blue lines on them. Anyone else?

    My iPhone 4 camera images have blue lines on them. Anyone else have this?

    My iPhone 4 camera images have blue lines on them. Anyone else have this?

  • FaceTime Camera Images Look Poor on New Macbook Pro Retina Models

    I received my new 2012 Macbook Pro Retina display model yesterday. When doing Facetime last night, others on the other end were commenting how poor the image coming from my end looked. Then I tried it on my iphone 4S and it was amazing how much better the picture of me looked on the phone versus the macbook. Today, I went to the Apple store to compare my new computer to the Retina display models on the display. Their camera images honestly didn't look much better than what I have on mine (but for example, the new Macbook Air's images look much more realistic). Why is this? How can the HD Facetime camera in the Macbook Pro produce less realistic images than the lower resolution iPhone 4S or Ipad cameras? Any help or insight you could share would be appreciated.
    Thanks!
    Jason

    Thanks for the update, Jason.
    Jason1975 wrote: ... There is definitely a difference between what was seen on the MacBook Pro Retina models on display and what the other sources I mentioned were displaying. Perhaps it has to do with the new display and software that isn't updated yet...
    .... Unfortunately, the new laptop has the same issue...
    Of course what is seen on Retina versus non-Retina display will be different.  That is a different issue from the video quality your video contacts experience.  However, the fact that you see the same problems at your home on a second new Mac means you will need to do some more extensive troubleshooting involving another trip to the Apple Store.
    Rather than merely looking at displays of the live camera, I suggest you compare how the FaceTime video looks when received on your iPhone while in the Apple Store.  If necessary, you should test your new Mac plus some of the Store models, too.  Taking your new Mac & iPhone back the the Apple Store and connecting there will have the added benefit of eliminating possible internet connection issues at your location.
    At the Store, you can compare how your new Mac's video transmissions (iChat, FaceTime, etc.) and video from some Store display cameras look on your iPhone as a receiving device.  If all are "bad" on your iPhone, you can also compare video transmissions received on one of the Store's devices to be sure it sees the same video problem as your iPhone.
    While connected via wi-fi in the Apple Store, if the FaceTime video transmissions from your new Retina MacBook Pro (RMBP) to your iPhone is lower quality from that of the Apple Store's RMBP FaceTime to your iPhone, it seems to me that the Geniuses should determine whether your new RMBP needs service or (highly unlikely) is a second "bad" Mac that should be exchanged for a RMBP that works properly.  This time, test the fix BEFORE you take it home again.
    If, every RMBP you test in the Apple Store looks worse than the video sent from all other devices, you are most likely correct that some software needs to be updated for video quality.
    All this testing may take some time, so plan ahead.  Perhaps you want to make a Genius appointment.  However, although the Geniuses were unable to give a definitive answer other than swapping RMBPs during your last visit, they may have since found an official answer to your questions. 
    Message was edited by: EZ Jim
    Mac OSX 10.7.4

  • Camera image orientation on iOS

    Hi,
    Taking a picture using CamerUI on iOS (and on Android) may bring the image oriented in the wrong angle.
    Reading the Exif on Android is fine and allows reorientation to the correct position, however this is not working on iOS.
    Since I assume taking a picture using the camera is a core feature for many applications, I’d appreciate if someone who managed to solve it can post a solution here?
    Thanks!

    I think this is it:
    // ExifReader.as
    // Reads and obtains JPG EXIF data.
    // Project site: http://devstage.blogspot.com/2011/02/extract-jpg-exif-metadata-in.html
    // SAMPLE USAGE:
    // var reader:ExifReader = new ExifReader();
    // reader.addEventListener(Event.COMPLETE, function (e:Event):void{
    //     trace(reader.getKeys());
    //     trace(reader.getValue("DateTime"));
    //     trace(reader.getThumbnailBitmapData().width +'x' + reader.getThumbnailBitmapData().height);
    // reader.load(new URLRequest('myimage.jpg'), true);
    package
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.events.ProgressEvent;
        import flash.net.URLRequest;
        import flash.net.URLStream;
        import flash.utils.ByteArray;
        public class ExifReader extends EventDispatcher
            private var m_loadThumbnail:Boolean = false;
            private var m_urlStream:URLStream = null;
            private var m_data:ByteArray = new ByteArray();
            private var m_exif:Object = new Object;
            private var m_exifKeys:Array = new Array();
            private var m_intel:Boolean=true;
            private var m_loc:uint=0; 
            private var m_thumbnailData:ByteArray = null;
            private var m_thumbnailBitmapData:BitmapData=null;
            private var DATASIZES:Object = new Object;
            private var TAGS:Object = new Object;
            public function load(urlReq:URLRequest, loadThumbnail:Boolean = false):void{
                m_loadThumbnail = loadThumbnail;  
                m_urlStream = new URLStream();
                m_urlStream.addEventListener( ProgressEvent.PROGRESS, dataHandler);
                m_urlStream.load(urlReq);
            public function getKeys():Array{
                return m_exifKeys;
            public function hasKey(key:String):Boolean{
                return m_exif[key] != undefined;
            public function getValue(key:String):Object{
                if(m_exif[key] == undefined) return null;
                return m_exif[key];
            public function getThumbnailBitmapData():BitmapData{
                return m_thumbnailBitmapData;
            public function ExifReader(){
                DATASIZES[1] = 1;
                DATASIZES[2] = 1;
                DATASIZES[3] = 2;
                DATASIZES[4] = 4;
                DATASIZES[5] = 8;
                DATASIZES[6] = 1;  
                DATASIZES[7] = 1;
                DATASIZES[8] = 2;
                DATASIZES[9] = 4;
                DATASIZES[10] = 8;
                DATASIZES[11] = 4;
                DATASIZES[12] = 8;
                TAGS[0x010e] = 'ImageDescription';
                TAGS[0x010f] = 'Make';
                TAGS[0X0110] = 'Model';
                TAGS[0x0112] = 'Orientation';
                TAGS[0x011a] = 'XResolution';
                TAGS[0x011b] = 'YResolution';
                TAGS[0x0128] = 'ResolutionUnit';
                TAGS[0x0131] = 'Software';
                TAGS[0x0132] = 'DateTime';
                TAGS[0x013e] = 'WhitePoint';
                TAGS[0x013f] = 'PrimaryChromaticities';
                TAGS[0x0221] = 'YCbCrCoefficients';
                TAGS[0x0213] = 'YCbCrPositioning';
                TAGS[0x0214] = 'ReferenceBlackWhite';
                TAGS[0x8298] = 'Copyright';
                TAGS[0x829a] = 'ExposureTime';
                TAGS[0x829d] = 'FNumber';
                TAGS[0x8822] = 'ExposureProgram';
                TAGS[0x8827] = 'IsoSpeedRatings';
                TAGS[0x9000] = 'ExifVersion';
                TAGS[0x9003] = 'DateTimeOriginal';
                TAGS[0x9004] = 'DateTimeDigitized';
                TAGS[0x9101] = 'ComponentsConfiguration';
                TAGS[0x9102] = 'CompressedBitsPerPixel';
                TAGS[0x9201] = 'ShutterSpeedValue';
                TAGS[0x9202] = 'ApertureValue';
                TAGS[0x9203] = 'BrightnessValue';
                TAGS[0x9204] = 'ExposureBiasValue';
                TAGS[0x9205] = 'MaxApertureValue';
                TAGS[0x9206] = 'SubjectDistance';
                TAGS[0x9207] = 'MeteringMode';
                TAGS[0x9208] = 'LightSource';
                TAGS[0x9209] = 'Flash';
                TAGS[0x920a] = 'FocalLength';
                TAGS[0x927c] = 'MakerNote';
                TAGS[0x9286] = 'UserComment';
                TAGS[0x9290] = 'SubsecTime';
                TAGS[0x9291] = 'SubsecTimeOriginal';
                TAGS[0x9292] = 'SubsecTimeDigitized';
                TAGS[0xa000] = 'FlashPixVersion';
                TAGS[0xa001] = 'ColorSpace';
                TAGS[0xa002] = 'ExifImageWidth';
                TAGS[0xa003] = 'ExifImageHeight';
                TAGS[0xa004] = 'RelatedSoundFile';
                TAGS[0xa005] = 'ExifInteroperabilityOffset';
                TAGS[0xa20e] = 'FocalPlaneXResolution';
                TAGS[0xa20f] = 'FocalPlaneYResolution';
                TAGS[0xa210] = 'FocalPlaneResolutionUnit';
                TAGS[0xa215] = 'ExposureIndex';
                TAGS[0xa217] = 'SensingMethod';
                TAGS[0xa300] = 'FileSource';
                TAGS[0xa301] = 'SceneType';
                TAGS[0xa302] = 'CFAPattern';
                //... add more if you like.
                //See http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html
            private function dataHandler(e:ProgressEvent):void{
                //EXIF data in top 64kb of data
                if(m_urlStream.bytesAvailable >= 64*1024){
                    m_urlStream.readBytes(m_data, 0, m_urlStream.bytesAvailable);
                    m_urlStream.close();
                    processData();
            private function processData():void{
                var iter:int=0;
                //confirm JPG type
                if(!(m_data.readUnsignedByte()==0xff && m_data.readUnsignedByte()==0xd8))
                    return stop();
                //Locate APP1 MARKER
                var ff:uint=0;
                var marker:uint=0;
                for(iter=0;iter<5;++iter){ //cap iterations
                    ff = m_data.readUnsignedByte();
                    marker = m_data.readUnsignedByte();
                    var size:uint = (m_data.readUnsignedByte()<<8) + m_data.readUnsignedByte();
                    if(marker == 0x00e1) break;
                    else{
                        for(var x:int=0;x<size-2;++x) m_data.readUnsignedByte();
                //Confirm APP1 MARKER
                if(!(ff == 0x00ff && marker==0x00e1)) return stop();
                //Confirm EXIF header
                var i:uint;
                var exifHeader:Array = [0x45,0x78,0x69,0x66,0x0,0x0];
                for(i=0; i<6;i++) {if(exifHeader[i] != m_data.readByte()) return stop();}
                //Read past TIFF header
                m_intel = (m_data.readByte()!=0x4d);
                m_data.readByte(); //redundant
                for(i=0; i<6;i++) {m_data.readByte();} //read rest of TIFF header
                //Read IFD data
                m_loc = 8;
                readIFD(0);
                //Read thumbnail
                if(m_thumbnailData){
                    var loader:Loader = new Loader();
                    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbnailLoaded);
                    loader.loadBytes(m_thumbnailData);
                else stop();
            //EXIF data is composed of 'IFD' fields.  You have IFD0, which is the main picture data.
            //IFD1 contains thumbnail data.  There are also sub-IFDs inside IFDs, notably inside IFD0.
            //The sub-IFDs will contain a lot of additional EXIF metadata.
            //readIFD(int) will help read all of these such fields.
            private function readIFD(ifd:int):void{
                var iter:int=0;
                var jumps:Array = new Array();
                var subexifJump:uint=0;
                var thumbnailAddress:uint=0;
                var thumbnailSize:int=0;
                // Read number of entries
                var numEntries:uint;
                if(m_intel) numEntries = m_data.readUnsignedByte() + (m_data.readUnsignedByte()<<8);
                else numEntries = (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte());
                if(numEntries>100) numEntries=100; //cap entries
                m_loc+=2;
                for(iter=0; iter<numEntries;++iter){
                    //Read tag
                    var tag:uint;
                    if(m_intel) tag = (m_data.readUnsignedByte()) + (m_data.readUnsignedByte()<<8);
                    else tag = (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte());
                    //read type
                    var type:uint;
                    if(m_intel) type = (m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8));
                    else type = (m_data.readUnsignedByte()<<8)+(m_data.readUnsignedByte()<<0);
                    //Read # of components
                    var comp:uint;
                    if(m_intel) comp = (m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<24));
                    else comp = (m_data.readUnsignedByte()<<24)+(m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<0);
                    //Read data
                    var data:uint;
                    if(m_intel) data= m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<24);
                    else data = (m_data.readUnsignedByte()<<24)+(m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<0);
                    m_loc+=12;
                    if(tag==0x0201) thumbnailAddress = data; //thumbnail address
                    if(tag==0x0202) thumbnailSize = data;  //thumbnail size (in bytes)
                    if(TAGS[tag] != undefined){
                        //Determine data size
                        if(DATASIZES[type] * comp <= 4){
                            //data is contained within field
                            m_exif[TAGS[tag]] = data;
                            m_exifKeys.push(TAGS[tag]);
                        else{
                            //data is at an offset
                            var jumpT:Object = new Object();
                            jumpT.name = TAGS[tag];
                            jumpT.address=data;
                            jumpT.components = comp;
                            jumpT.type = type;
                            jumps.push(jumpT);
                    if(tag==0x8769){ // subexif tag
                        subexifJump = data;
                var nextIFD:uint;
                if(m_intel) {
                    nextIFD= m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<24);
                else {
                    nextIFD = (m_data.readUnsignedByte()<<24)+(m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<0);
                m_loc+=4;
                //commenting this out, as suggested in the comments.
                //if(ifd==0) jumps = new Array();
                for each(var jumpTarget:Object in jumps){
                    var jumpData:Object = null;
                    for(;m_loc<jumpTarget.address;++m_loc)m_data.readByte();
                    if(jumpTarget.type==5){
                        //unsigned rational
                        var numerator:uint = m_data.readInt();
                        var denominator:uint = m_data.readUnsignedInt();
                        m_loc+=8;
                        jumpData = numerator / denominator;
                    if(jumpTarget.type==2){
                        //string
                        var field:String='';
                        for(var compGather:int=0;compGather<jumpTarget.components;++compGather){
                            field += String.fromCharCode(m_data.readByte());
                            ++m_loc;
                        if(jumpTarget.name=='DateTime' ||
                            jumpTarget.name=='DateTimeOriginal' ||
                            jumpTarget.name=='DateTimeDigitized'){
                            var array:Array = field.split(/[: ]/);
                            if(parseInt(array[0]) > 1990){
                                jumpData = new Date(parseInt(array[0]), parseInt(array[1])-1,
                                    parseInt(array[2]), parseInt(array[3]),
                                    parseInt(array[4]), parseInt(array[5]));
                        else jumpData = field;
                    m_exif[jumpTarget.name] = jumpData;
                    m_exifKeys.push(jumpTarget.name);
                if(ifd==0 && subexifJump){
                    //jump to subexif area to obtain meta information
                    for(;m_loc<data;++m_loc) m_data.readByte();
                    readIFD(ifd);
                if(ifd==1 && thumbnailAddress && m_loadThumbnail){
                    //jump to obtain thumbnail
                    for(;m_loc<thumbnailAddress;++m_loc) m_data.readByte();
                    m_thumbnailData = new ByteArray();
                    m_data.readBytes(m_thumbnailData, 0, thumbnailSize);
                    return;
                // End-of-IFD
                // read the next IFD
                if(nextIFD){
                    for(;m_loc<nextIFD;++m_loc) m_data.readUnsignedByte();               
                if(ifd==0 && nextIFD)
                    readIFD(1);
            private function thumbnailLoaded(e:Event):void{
                m_thumbnailData.clear();
                var loader:LoaderInfo = e.target as LoaderInfo;
                var bitmap:Bitmap = loader.content as Bitmap;
                if(bitmap != null){
                    m_thumbnailBitmapData = bitmap.bitmapData;
                stop();
            // Releases m_data and dispatches COMPLETE signal.
            private function stop():void{
                m_data=null;
                dispatchEvent(new Event(Event.COMPLETE));
                return;

  • Capture Web Cam image in APEX and Upload into the Database

    Overview
    By using a flash object, you should be able to interface with a usb web cam connected to the client machine. Their are a couple of open source ones that I know about, but the one I chose to go with is by Taboca Labs and is called CamCanvas. This is released under the MIT license, and it is at version 0.2, so not very mature - but in saying that it seems to do the trick. The next part is to upload a snapshot into the database - in this particular implementation, it is achieved by taking a snapshot, and putting that data into the canvas object. This is a new HTML5 element, so I am not certain what the IE support would be like. Once you have the image into the canvas, you can then use the provided function convertToDataURL() to convert the image into a Base64 encoded string, which you can then use to convert into to a BLOB. There is however one problem with the Base64 string - APEX has a limitation of 32k for and item value, so can't be submitted by normal means, and a workaround (AJAX) has to be implemented.
    Part 1. Capturing the Image from the Flash Object into the Canvas element
    Set up the Page
    Required Files
    Download the tarball of the webcam library from: https://github.com/taboca/CamCanvas-API-/tarball/master
    Upload the necessary components to your application. (The flash swf file can be got from one of the samples in the Samples folder. In the root of the tarball, there is actually a swf file, but this seems to be a different file than of what is in the samples - so I just stick with the one from the samples)
    Page Body
    Create a HTML region, and add the following:
        <div class="container">
           <object  id="iembedflash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="320" height="240">
                <param name="movie" value="#APP_IMAGES#camcanvas.swf" />
                <param name="quality" value="high" />
              <param name="allowScriptAccess" value="always" />
                <embed  allowScriptAccess="always"  id="embedflash" src="#APP_IMAGES#camcanvas.swf" quality="high" width="320" height="240"
    type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" mayscript="true"  />
        </object>
        </div>
    <p><a href="javascript:captureToCanvas()">Capture</a></p>
    <canvas style="border:1px solid yellow"  id="canvas" width="320" height="240"></canvas>That will create the webcam container, and an empty canvas element for the captured image to go into.
    Also, have a hidden unprotected page item to store the Base64 code into - I called mine P2_IMAGE_BASE64
    HTML Header and Body Attribute
    Add the Page HTML Body Attribute as:
    onload="init(320,240)"
    JavaScript
    Add the following in the Function and Global Variable Declarations for the page (mostly taken out of the samples provided)
    //Camera relations functions
    var gCtx = null;
    var gCanvas = null;
    var imageData = null;
    var ii=0;
    var jj=0;
    var c=0;
    function init(ww,hh){
         gCanvas = document.getElementById("canvas");
         var w = ww;
         var h = hh;
         gCanvas.style.width = w + "px";
         gCanvas.style.height = h + "px";
         gCanvas.width = w;
         gCanvas.height = h;
         gCtx = gCanvas.getContext("2d");
         gCtx.clearRect(0, 0, w, h);
         imageData = gCtx.getImageData( 0,0,320,240);
    function passLine(stringPixels) {
         //a = (intVal >> 24) & 0xff;
         var coll = stringPixels.split("-");
         for(var i=0;i<320;i++) {
              var intVal = parseInt(coll);
              r = (intVal >> 16) & 0xff;
              g = (intVal >> 8) & 0xff;
              b = (intVal ) & 0xff;
              imageData.data[c+0]=r;
              imageData.data[c+1]=g;
              imageData.data[c+2]=b;
              imageData.data[c+3]=255;
              c+=4;
         if(c>=320*240*4) {
              c=0;
              gCtx.putImageData(imageData, 0,0);
    function captureToCanvas() {
         flash = document.getElementById("embedflash");
         flash.ccCapture();
         var canvEle = document.getElementById('canvas');
         $s('P2_IMAGE_BASE64', canvEle.toDataURL());//Assumes hidden item name is P2_IMAGE_BASE64
         clob_Submit();//this is a part of part (AJAX submit value to a collection) two
    }In the footer region of the page (which is just a loading image to show whilst the data is being submitted to the collection [hidden by default]) :<img src="#IMAGE_PREFIX#processing3.gif" id="AjaxLoading"
    style="display:none;position:absolute;left:45%;top:45%;padding:10px;border:2px solid black;background:#FFF;" />If you give it a quick test, you should be able to see the webcam feed and capture it into the canvas element by clicking the capture link, in between the two elements - it might through a JS error since the clob_Submit() function does not exist yet.
    *Part 2. Upload the image into the Database*
    As mentioned in the overview, the main limitation is that APEX can't submit values larger than 32k, which I hope the APEX development team will be fixing this limitation in a future release, the workaround isn't really good from a maintainability perspective.
    In the sample applications, there is one that demonstrates saving values to the database that are over 32k, which uses an AJAX technique: see http://www.oracle.com/technetwork/developer-tools/apex/application-express/packaged-apps-090453.html#LARGE.
    *Required Files*
    From the sample application, there is a script you need to upload, and reference in your page. So you can either install the sample application I linked to, or grab the script from the demonstration I have provided - its called apex_save_large.js.
    *Create a New Page*
    Create a page to Post the large value to (I created mine as 1000), and create the following process, with the condition that Request = SAVE. (All this is in the sample application for saving large values).declare
         l_code clob := empty_clob;
    begin
         dbms_lob.createtemporary( l_code, false, dbms_lob.SESSION );
         for i in 1..wwv_flow.g_f01.count loop
              dbms_lob.writeappend(l_code,length(wwv_flow.g_f01(i)),wwv_flow.g_f01(i));
         end loop;
         apex_collection.create_or_truncate_collection(p_collection_name => wc_pkg_globals.g_base64_collection);
         apex_collection.add_member(p_collection_name => wc_pkg_globals.g_base64_collection,p_clob001 => l_code);
         htmldb_application.g_unrecoverable_error := TRUE;
    end;I also created a package for storing the collection name, which is referred to in the process, for the collection name:create or replace
    package
    wc_pkg_globals
    as
    g_base64_collection constant varchar2(40) := 'BASE64_IMAGE';
    end wc_pkg_globals;That is all that needs to be done for page 1000. You don't use this for anything else, *so go back to edit the camera page*.
    *Modify the Function and Global Variable Declarations* (to be able to submit large values.)
    The below again assumes the item that you want to submit has an item name of 'P2_IMAGE_BASE64', the condition of the process on the POST page is request = SAVE, and the post page is page 1000. This has been taken srtaight from the sample application for saving large values.//32K Limit workaround functions
    function clob_Submit(){
              $x_Show('AjaxLoading')
              $a_PostClob('P2_IMAGE_BASE64','SAVE','1000',clob_SubmitReturn);
    function clob_SubmitReturn(){
              if(p.readyState == 4){
                             $x_Hide('AjaxLoading');
                             $x('P2_IMAGE_BASE64').value = '';
              }else{return false;}
    function doSubmit(r){
    $x('P2_IMAGE_BASE64').value = ''
         flowSelectAll();
         document.wwv_flow.p_request.value = r;
         document.wwv_flow.submit();
    }Also, reference the script that the above code makes use of, in the page header<script type="text/javascript" src="#WORKSPACE_IMAGES#apex_save_large.js"></script>Assuming the script is located in workspace images, and not associated to a specific app. Other wise reference #APP_IMAGES#
    *Set up the table to store the images*CREATE TABLE "WC_SNAPSHOT"
    "WC_SNAPSHOT_ID" NUMBER NOT NULL ENABLE,
    "BINARY" BLOB,
    CONSTRAINT "WC_SNAPSHOT_PK" PRIMARY KEY ("WC_SNAPSHOT_ID")
    create sequence seq_wc_snapshot start with 1 increment by 1;
    CREATE OR REPLACE TRIGGER "BI_WC_SNAPSHOT" BEFORE
    INSERT ON WC_SNAPSHOT FOR EACH ROW BEGIN
    SELECT seq_wc_snapshot.nextval INTO :NEW.wc_snapshot_id FROM dual;
    END;
    Then finally, create a page process to save the image:declare
    v_image_input CLOB;
    v_image_output BLOB;
    v_buffer NUMBER := 64;
    v_start_index NUMBER := 1;
    v_raw_temp raw(64);
    begin
    --discard the bit of the string we dont need
    select substr(clob001, instr(clob001, ',')+1, length(clob001)) into v_image_input
    from apex_collections
    where collection_name = wc_pkg_globals.g_base64_collection;
    dbms_lob.createtemporary(v_image_output, true);
    for i in 1..ceil(dbms_lob.getlength(v_image_input)/v_buffer) loop
    v_raw_temp := utl_encode.base64_decode(utl_raw.cast_to_raw(dbms_lob.substr(v_image_input, v_buffer, v_start_index)));
    dbms_lob.writeappend(v_image_output, utl_raw.length(v_raw_temp),v_raw_temp);
    v_start_index := v_start_index + v_buffer;
    end loop;
    insert into WC_SNAPSHOT (binary) values (v_image_output); commit;
    end;Create a save button - add some sort of validation to make sure the hidden item has a value (i.e. image has been captured). Make the above conditional for request = button name so it only runs when you click Save (you probably want to disable this button until the data has been completely submitted to the collection - I haven't done this in the demonstration).
    Voila, you should have now be able to capture the image from a webcam. Take a look at the samples from the CamCanvas API for extra effects if you wanted to do something special.
    And of course, all the above assumed you want a resolution of 320 x 240 for the image.
    Disclaimer: At time of writing, this worked with a logitech something or rather webcam, and is completely untested on IE.
    Check out a demo: http://apex.oracle.com/pls/apex/f?p=trents_demos:webcam_i (my image is a bit blocky, but i think its just my webcam. I've seen others that are much more crisp using this) Also, just be sure to wait for the progress bar to dissappear before clicking Save.
    Feedback welcomed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Hmm, maybe for some reason you aren't getting the base64 version of the saved image? Is the collection getting the full base64 string? Seems like its not getting any if its no data found.
    The javascript console is your friend.
    Also, in the example i used an extra page, from what one of the examples on apex packages apps had. But since then, I found this post by Carl: http://carlback.blogspot.com/2008/04/new-stuff-4-over-head-with-clob.html - I would use this technique for submitting the clob, over what I have done - as its less hacky. Just sayin.

Maybe you are looking for

  • Issue with script timeouts - trying to send email mail shots - hosting recommendations?

    Background is this - I look after a site for a recruitment agency, which has a backend mySQL database. It includes a table of potential candidates, which the site owner can search based on various criteria and then send all the returned candidates an

  • My daughter's ipod touch got hot while charging and will no longer turn on.

    My daugther's ipod touch got hot and will no longer turn on.  Is there a solution to this problem or is the ipod fried?

  • Download Crystal Report XI R2

    Hi, Does any one knows where can i download Crystal Report XI R2? In [http://www.businessobjects.com/product/freetrials.asp]  i can only find Crystal Reports XI not Crystal Reports XI R2. After i downloaded the version is 11.0.0.1282. Is this the cor

  • Converting a two system landscape to three system landscape

    Currently, I have a two system landscape: DEV (development)  and PRD (production) in STMS I would like to add a QAS system so I will end up with DEV-QAS-PRD in STMS I would like to keep all data the way it is. I don't want to lose any logs or files i

  • Dashboards in Hyperion

    Hi all, I have planned to build dashboards in hyperion. i am new to this tool. can anyone tell me what are all the components needed for Working on Dashboard.(In which component we will be creating dashboards.I am also planning to put these dashboard