Trying to overlay text onto images and save them.

What I want: I have a computer running the media in my car and I want to hook up a camera to it that'll record when the computer is running and overlay the GPS speed onto the video for later viewing.
What I got: I have the following piece of code that saves a series of .jpg images at a specified frame rate and a separate Java application that puts them together into a .mov file to view later. I couldn't find anything to record the straight video so if you have any links for that, please point me. But for now I'll settle for doing it this way and I'm not too concerned with the GPS speed NMEA parsing for now, I'll just use a static speed label until I get the overlaying working.
What I need: I need to know what to plug into the speedOverlay() method in order to grab the image and put the speed on top of it before saving it and moving to the next image. Any ideas?
Code:
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.media.sound.Toolkit;
import javax.imageio.ImageIO;
import javax.media.*;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Timer;
import java.util.TimerTask;
public class SwingCapture1 extends Panel implements Runnable, ActionListener
     private static final long serialVersionUID = 1L;
     public static Player player = null;
     public CaptureDeviceInfo di = null;
     public MediaLocator ml = null;
     public JButton start = new JButton("START");
     public JButton stop = new JButton ("STOP NOW");
     public JLabel frequencyLabel = new JLabel("Frequency:");
     public JTextField frequencyInputField = new JTextField(5);
     public JLabel framerateLabel = new JLabel("Framerate: ");
     public JTextField framerateInputField = new JTextField(5);
     public JLabel timerLabel = new JLabel("Timer: ");
     public JTextField timerInputField = new JTextField(5);
     public JPanel southPanel = new JPanel();
     public static Buffer buf = null;
     public static Image img = null;
     public VideoFormat vf = null;
     public static BufferToImage btoi = null;
     public static ImagePanel imgpanel = null;
     public static Timer timer = new Timer();
     static int theFrameRate = 0;
     static int theTimeLength = 0;
     static int i = 0;
     static int interval = 0;
     int count = 0;
     static int timeLength = 0;
     static String filePrefix = "";
     static String imagesDirectory = "c:\\images\\";
     static boolean timerBoolean = true;
     Thread capThread;
     Toolkit toolkit;
     public SwingCapture1()
          setLayout(new BorderLayout());
//          setSize(640, 480);
          imgpanel = new ImagePanel();
          start.addActionListener(this);
          final String str = "vfw:Microsoft WDM Image Capture (Win32):0";
          di = CaptureDeviceManager.getDevice(str);
          ml = new MediaLocator(str);
          try
               player = Manager.createRealizedPlayer(ml);
               player.start();
               Component comp;
               if ((comp = player.getVisualComponent()) != null)
                    add(comp, BorderLayout.LINE_START);
//               add(capture);
               add(imgpanel, BorderLayout.LINE_END);
               add(southPanel, BorderLayout.SOUTH);
               southPanel.add(framerateLabel);
               southPanel.add(framerateInputField);
               southPanel.add(timerLabel);
               southPanel.add(timerInputField);
               southPanel.add(start);
               southPanel.add(stop);
          catch (final Exception e)
               System.out.println("ERROR 1");
               e.printStackTrace();
     public static void playerclose()
          player.close();
          player.deallocate();
     public void actionPerformed(final ActionEvent e)
          final JComponent c = (JComponent) e.getSource();
          if (c == start)
//               snapPicture();
               theFrameRate = Integer.parseInt(framerateInputField.getText());
               theTimeLength = Integer.parseInt(timerInputField.getText());
               startCapture(theFrameRate, theTimeLength);
          if (c == stop)
               timerBoolean = false;
     public void startCapture(final int framerate, final int timeLength)
          interval = 1000 / framerate;
          // Start timer.
          timer.scheduleAtFixedRate(new TimerTask ()
               public void run()
                    System.out.println("SNAP");
                    snapPicture();
                    count++;
                    if (count >= timeLength * framerate)
                         this.cancel();
          }, 1000, interval);
     public static void snapPicture()
          final FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
          buf = fgc.grabFrame(); // Convert it to an image
          btoi = new BufferToImage((VideoFormat) buf.getFormat());
          img = btoi.createImage(buf); // show the image
          imgpanel.setImage(img); // save image
          // saveJPG(img, "c:\\java\\Tomcat\\webapps\\loadimage\\main.jpg");
          i++;
          speedOverlay(img);
          saveJPG(img, imagesDirectory + filePrefix + i + ".jpg");
     public static void speedOverlay(Image img)
     public static void saveJPG(final Image img, final String s)
          final BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
          final Graphics2D g2 = bi.createGraphics();
          g2.drawImage(img, null, null);
          FileOutputStream out = null;
          try
               out = new FileOutputStream(s);
          catch (final java.io.FileNotFoundException io)
               System.out.println("ERROR 2");
               System.out.println("File Not Found");
          final JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
          final JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
          param.setQuality(0.5f, false);
          encoder.setJPEGEncodeParam(param);
          try
               encoder.encode(bi);
               out.close();
          catch (final java.io.IOException io)
               System.out.println("ERROR 3");
               System.out.println("IOException");
     public void start()
          if (capThread == null)
               capThread = new Thread(this, "Capture Thread");
               capThread.start();
     public Image getFrameImage()
          // Grab a frame
          final FrameGrabbingControl fgc = (FrameGrabbingControl)
          player.getControl("javax.media.control.FrameGrabbingControl");
          buf = fgc.grabFrame();
          // Convert it to an image
          btoi = new BufferToImage((VideoFormat)buf.getFormat());
          return btoi.createImage(buf);
     @Override
     public void run() {
          // TODO Auto-generated method stub
}

Sorry guys, I haven't looked at your links yet but I will, once I get some time to sit down and code again. I just wanted to provide this piece of code that uses the Graphics2d you're talking about to overlay text onto an image but I haven't been able to plug it into my code at all. If you're links answer the question, I'm sorry, just providing it until I can actually sit down and spend time on the research you've given me. Thanks.
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import java.text.*;
import java.util.*;
import javax.imageio.*;
import javax.swing.*;
public class WaterMark {
    public static void main(String[] args) throws IOException {
         String speed = "50";
        URL url = new URL("file:c:\\images\\1.jpg");
        BufferedImage im = ImageIO.read(url);
        String text = speed + " Km/H";
        Graphics2D g = im.createGraphics();
//        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
//        g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
//        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setFont(new Font("Lucida Bright", Font.ITALIC, 40));
//        g.rotate(-Math.PI/4, im.getWidth()/2, im.getHeight()/2);
        TextLayout tl = new TextLayout(text, g.getFont(), g.getFontRenderContext());
//        Rectangle2D bounds = tl.getBounds();
//        double x = (im.getWidth()-bounds.getWidth())/2 - bounds.getX();
//        double y = (im.getHeight()-bounds.getHeight())/2 - bounds.getY();
        double x = 10;
        double y = 50;
        Shape outline = tl.getOutline(AffineTransform.getTranslateInstance(x+2, y+1));
//        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));
        g.setPaint(Color.BLACK);
        g.draw(outline);
//        g.setPaint(new GradientPaint(0, 0, Color.WHITE, 30, 20, new Color(128,128,255), true));
        tl.draw(g, (float)x, (float)y);
        g.dispose();
        display(im);
    public static void display(BufferedImage image) {
        JFrame f = new JFrame("WaterMark");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JLabel(new ImageIcon(image)));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
}

Similar Messages

  • Auto align images and save them individually

    Is there a way to let photoshop auto align images and then save them to separate .tiff files?
    Best regards

    File > Scripts > Export Layers to Files
    Don't forget to crop the auto aligned imaged so that all layers share the same outline.

  • Trying to create an image and save it on file system

    Hi,
    I'm trying to create an image and save it in the file system :
         public static void main(String[] args) {
         int wid = 632;
         int hgt = 864;
         BufferedImage bufferedImage = new BufferedImage(wid,hgt,BufferedImage.TYPE_INT_RGB);
         bufferedImage.getGraphics().setColor(Color.black);
         bufferedImage.getGraphics().drawOval(30, 30, 100, 100);
              bufferedImage.getGraphics().drawString("test me one two three",2,2);
              bufferedImage.flush();
    try {
                   ImageIO.write(bufferedImage,".bmp",new File("C:/MyImage.bmp"));
         } catch (IOException e) {               
                   e.printStackTrace();
    THE PROBLEM : It creates C:/MyImage.bmp on my file system, but the file is empty (size 0).
    Am I missing something ?
    Thanks

    Try changing ".bmp" to "bmp". If that fails, try posting an SSCCE.
    Edit 1:
    And in future, please use the code tags when posting code, code snippets, HTML/XML or input/output. To do that, select the code and click the CODE button seen on the Plain Text tab of the message posting form.
    Edited by: AndrewThompson64 on Aug 3, 2009 1:23 AM

  • Aperture newbie, is it possible to overlay text onto a photo?

    Aperture newbie, is it possible to overlay text onto a photo?

    Not from Aperture. But there is a free plugin named BorderFX. With this tool you can add text to photos easily.
    The option of BorderFX are:
    Add multiple borders.
    Borders can be bevelled, or shaded to create more realistic frames.
    Add Titles, Copyright & Metadata.
    Add a Watermark to your images.
    Save images back into the Aperture Library, using the BorderFX Edit plugin.
    Position text anywhere on the photo.
    Add any number of text boxes to the photo.
    Support for ColorSync and ICC profiles.
    Aperture 3, 64-bit support.

  • How do I take an object from an image and save it so I can use it in other images?

    I am trying to figure out how to take an object from an image and save it so I can re-use it again in other pictures?  I know how to use the magic wand to select the object and place it in a blank image.... but I do not know how to re size the selected object or keep it for later use.  Basically I would like to use the object the same way that I use the graphics ... so I guess I am wondering if there is a way that I can make my own graphics... I have Elements Photoshop 13.  Thanks for any help/advice....  Jerrie

    Hi Jerrie,
    You can re-size using Transformation tool. Ctrl + T will give you a box to re-size the image or object.
    You can save these object as PNG file with Transparent layer. You can use these objects later in another projects.
    Regards,
    Sandeep

  • AppleScript to resize images and save with new name

    I want to make an apple script, which resizes all images of a folder regardless what kind of filetype.
    The source folder will change every day.
    With the script i want to choose a source Folder, resize all images and save the files with my jpeg options in the same folder, but with adding  „_ipad“ in the filename.
    I tried to edit an existing script from this forum, but in Photoshop 5.1 i get the error-message "This function is possibly not available in this Version" in line 18 "save in file newFileName as JPEG with options myOptions"
    How can i save the documents with new name in the existing folder?
    Thanks.
    This is the script i’m working with:
    set inputFolder to choose folder with prompt "Wähle einen Ordner:"
    --set destinationFolder to choose folder with prompt "Wähle einen Zielordner" as string
    tell application "Finder"
              set filesList to (files of entire contents of inputFolder) as alias list
    end tell
    tell application "Adobe Photoshop CS5.1"
              set UserPrefs to properties of settings
              set ruler units of settings to pixel units
              repeat with aFile in filesList
      open aFile showing dialogs never
                        set docRef to the current document
                        tell docRef
                                  set newFileName to my getBaseName(name)
      --resize image height 240 resolution 72 resample method bicubic sharper
      change mode to RGB
      resize image resolution 72
                                  set myOptions to {class:JPEG save options, embed color profile:true, quality:12, format options:progressive, scans:3}
      save in file newFileName as JPEG with options myOptions
                        end tell
      close the current document saving no
              end repeat
              set ruler units of settings to ruler units of UserPrefs
    end tell
    on getBaseName(fName)
              set baseName to fName
              repeat with idx from 1 to (length of fName)
                        if (item idx of fName = ".") then
                                  set baseName to (items 1 thru (idx - 1) of fName) as string
                                  exit repeat
                        end if
              end repeat
              return baseName
    end getBaseName

    This seems like a Photoshop error not an AppleScript one. Have you looked in the Photoshop dictionary to see if the command you are getting the error on exists and if it has those options?
    If all you want to do is resize image files and save the resized image file you might want to look at Automator. Specifically the Scale Image action under Photos.
    regards

  • Why isn't my iTunes store loading properly? It lists everything in text without images, and I can't seem to access the store when I try to search for music or movies etc.

    Why isn't my iTunes store loading properly? It lists everything in text without images, and I can't seem to access the store when I try to search for music or movies etc.

    1) The best way to relocate the iTunes library folder is to move the entire iTunes folder with all subfolders to the new path, then press and hold down shift as start iTunes and keep holding until prompted to choose a library, then browse to the relocated folder and open the file iTunes Library.itl inside it.
    If you've done something different then provide some more details about what is where and I should be able to help.
    2) Purchases on the device should automatically transfer to a Purchased on <DeviceName> playlist, but it my depend a bit on whether automatic iCloud downloads are enabled. If there is a cloudy link then the transfer might not happen. You can use File > Devices > Transfer Purchases. In iTunes you should also check out iTunes Store > Quick Links > Purchased > Music > Not on this computer.
    3) Backup the device, then immediately restore it. In some cases you need to add a restore as new device into that equation. Obbviously not to be attempted until you're sure all your media is in your library. See Recover your iTunes library from your iPod or iOS device should it be needed.
    4) I believe there is complimentary 1 incident 90-day support with hardware purchases, but no free software support for iTunes itself. AppleCare gets you a different level of support.
    tt2

  • SuperImpose two images and save it as a single image[urgent]

    Hello..
    Can anyone tell me how do we superimpose two images and save it as a single image.The image on the top is smaller in size in my case.
    Please Help..

    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import javax.imageio.ImageIO;
    import javax.swing.*;
    class TwoBecomeOne {
        public static void main(String[] args) throws IOException {
            BufferedImage large = ImageIO.read(new File("images/tiger.jpg"));
            BufferedImage small = ImageIO.read(new File("images/bclynx.jpg"));
            int w = large.getWidth();
            int h = large.getHeight();
            int type = BufferedImage.TYPE_INT_RGB;
            BufferedImage image = new BufferedImage(w, h, type);
            Graphics2D g2 = image.createGraphics();
            g2.drawImage(large, 0, 0, null);
            g2.drawImage(small, 10, 10, null);
            g2.dispose();
            ImageIO.write(image, "jpg", new File("twoInOne.jpg"));
            JOptionPane.showMessageDialog(null, new ImageIcon(image), "",
                                          JOptionPane.PLAIN_MESSAGE);
    }

  • I have a temp working for me and she scanned all our batches upside down is there a way to flip them and save them without her having to rescan every batch.  We have tried flipping them and doing a save as, we have also tried to flip them and create a new

    I have a temp working for me and she scanned all our batches upside down is there a way to flip them and save them without her having to rescan every batch.  We have tried flipping them and doing a save as, we have also tried to flip them and create a new pdf document but nothing seems to be working

    If the file type is PDF then open them in Acrobat and rotate them via Tools - Pages - Rotate (not via the View menu, which is only temporary).
    You can also do this in an Action, if you have Acrobat Pro, and process multiple files in a single process.

  • Draw graphics on Image and Save it

    hi!,
    Can anyone help me how to draw graphics(Line, rectangle.ect) on an Image and save it. I need to do the following steps.
    1. Get the Image from the local file system
    2. Based on the parameters i receive for graphics(Ex: rectangle).
    -I have to draw a rectangle on the Image.
    3. Save the Image again to the file system
    I would appreciate if any one has any ideas or sample code I can start with.
    Thanks!!!

    Here's an example using the javax.imageio package.
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Rectangle;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    public class DrawOnImage {
        public static void main(String[] args) {
            try {
                BufferedImage buffer = ImageIO.read(new File(args[0]));
                Graphics2D g2d = buffer.createGraphics();
                Rectangle rect = new Rectangle(10, 10, 100, 100);
                g2d.setPaint(Color.RED);
                g2d.draw(rect);
                ImageIO.write(buffer, "JPG", new File(args[1]));
            } catch (IOException e) {
                e.printStackTrace();
    }

  • How to scan with capture image and save 10.6.8

    how to scan with capture image and save 10.6.8 ?

    Instructions for using Image Capture for this available via the 2nd section.
    http://support.apple.com/kb/HT2502

  • Open all pages in a PDF and save them as sequential files

    I'm trying to make a script that will open all pages in a multi-page PDF and save them as sequential files, but I have had no luck with the simple script in the "Adobe Ilustrator CS5 Reference: JavaScript".
    there example to open a PDF to a designated page does not work for me in Illustrator CS 5.
    // Opens a PDF file with specified options
    var pdfOptions = app.preferences.PDFFileOptions;
    pdfOptions.pDFCropToBox = PDFBoxType.PDFBOUNDINGBOX;
    pdfOptions.pageToOpen = 2;
    // Open a file using these preferences
    var fileRef = filePath;
    if (fileRef != null) {
    var docRef = open(fileRef, DocumentColorSpace.RGB);
    if anyone can get me on the right path it would be appreciated.

    Hi DuanesSFK,
    you can open a PDF page on this way (tested with CS3 and 5):
    //OpenPDFpage2.jsx
    var uILevel = userInteractionLevel; 
    app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
    // Opens a PDF file with specified options
    var pdfOptions = app.preferences.PDFFileOptions;
    pdfOptions.pDFCropToBox = PDFBoxType.PDFBOUNDINGBOX;
    pdfOptions.pageToOpen = 2;
    // Open a file using these preferences
    //var fileRef = filePath;
    var fileRef = File("~/Desktop/YourOwn.pdf");
    if (fileRef != null) {
    var docRef = open(fileRef, DocumentColorSpace.RGB);
    app.userInteractionLevel = uILevel;
    To open all pages you have to loop through all pages etc.
    Easier for you:
    Search here in forum for the "open pdf" script  (I don't know the exactly name, it was written by CarlosCanto, ) This should always work for you.
    Have fun

  • I converted from a PC to a Mac Mini.  I have my PC documents backed up on a DVD disk.  I have an external DVD drive connected to the Mac Mini.  I want to open them up and save them to the Mac, BUT....when I put the DVD disk in the Mac is NOT reading it!

    I converted from a PC to a Mac Mini.  I have my PC documents backed up on a DVD disk.  I have an external DVD drive connected to the Mac Mini.  I want to open these documents up from the DVD storage and save them to the Mac, BUT....when I put the DVD disk in the Mac is NOT reading it!

    Hi Joe,
    Thanks for your quick response.  I should add....it worked before.  When I previously inserted the two DVDs into this remote drive, and I went into finder, I could click on the "remote device" line and see all my saved documents (excel, word, etc) on the DVD and open them on the Mac.  Now I cannot see them, when I try to open them on the Mac, nothing happens, nothing is displayed.  I just re-tested the remote DVD drive with a CD and, no problem, it opened up the CD via iTunes and I cold play the CD.  SO......I know the remote DVD drive (it's an LG by the way) is fine, it's something to do with some settings on my mini mac,especially where I could open it previously.  I do not remember changing any settings since then. 
    When I go into system preferences and click on CD/DVD it gives me options of how to open up a music CD (default is iTunes), a DVD (default is iMovie), etc.  The problem is my DVD is all miscellaneious files/documents.  I just want to be able to see them in the finder.  I also tried to open them via microsoft word, from the remote disk and again, it could not open the drive, even though some of the documents were microsoft word documents.  Again, I was able to open them previously and the DVD is not corrupted in any way.  
    Any additional advice? 
    Thank you!

  • Developers I need an applescript that opens documents in excel from a specified folder and saves them as .xlsx from their current .xlsb

    mule13470 
    Apr 3, 2014 11:12 AM 
    I tried simply renaming them however it just corrupts the files when I do it like that so I need the applescript to open the files in excel and the save them as .xlsx to test I only need it one folder but if it works I'd like to be able to do it for all documents with .xlsb extentions that are in a huge folder with subfolders that contain a mix of .pdf, .docx, .xlsx and .xlsb. Please Help.
    Applescript Editor, Mac OS X (10.6.8) 
    I have this question too (0) 
    Reply
    Categories: Using OS X MavericksTags: mac, help, finder, excel, applescript_editor
    Level 1 (0 points)
    mule13470
    Re: I need an applescript that opens documents in excel from a specified folder and saves them as .xlsx from their current .xlsbApr 3, 2014 11:19 AM (in response to mule13470) 
    In that huge folder I only need the .xlsb files opened and saved to .xlsx not the others, in case that wasn't clear above.

    In that huge folder I only need the .xlsb files opened and saved to .xlsx not the others, in case that wasn't clear above.

  • I have created two related books in Lightroom 5 (Volumes 1 and 2) but my balance of page numbers is off. So I'd like to take some pages out of one book (complete with images) and paste them into the other. Is this possible?

    I have created two related Blurb books in Lightroom 5 (Volumes 1 and 2) but my balance of page numbers is off. So I'd like to take some pages out of one book (complete with images) and paste them into the other. Is this possible?

    Can you zip up a few of your GoPro images, upload them to dropbox.com and post a share link, here, so others can experiment with them, or do you mean this issue is global to all camera models?

Maybe you are looking for

  • Java.lang.UnsupportedClassVersionError: per/model/mac/Hrxss_Per_Subtype_Inf

    Hi, I have copied the essper application from inactive dc's and changed the visibility property to be derived dynamically depending on the subtype being displayed. After having deployed the essper, I am getting the java.lang.UnsupportedClassVersionEr

  • "There was a problem downloading the software for the iPhone"

    I'm in iTunes 8.2 with my iPhone 3G connected. I click "update" and I get a message saying that "iTunes will update your iPhone..." I click update and I get "There was a problem downloading the software for the iPhone "Steve's iPhone 3G". The network

  • Auto move mouse program?

    I need to have my cursor move automatically every minute or so, when I am not in front of my mac, so that a remote access program (over https) does not time out on me. I cannot seem to find an auto move mouse program for the mac on the web. There are

  • Stop battery charging with plugged MacBook Pro

    Hi, is it possible to stop battery charging on a MacBook (Pro) with the power plug connected? I have looked into the PM api docs but cannot find anything to do that. The idea is to make a menu app to toggle between "Preserve Battery Life" and "Full P

  • Flash shows as being installed but is not (according to Adobe)

    I want to view content using Flash. After manual install of Flash and also trying to install directly - nothing works. The Mozilla site indicates I should get a yellow bar asking to install but this does not appear. The plug Ins page shows I have no