Image/BufferedImage - PNG - Stream - Database?

I'm capturing an Image via clipboard paste action on a JTextArea, this part works fine.
1. I need to convert this image to a PNG format to...
2. store the PNG encoded image into a database using a PreparedStatement, that requires an InputStream.
The question is then, is it possible to go from a standard java Image, to a PNG encoded image, then to a memory mapped stream/file so that I can invoke the usual:
// where 's' is a PreparedStatement
s.setBinaryStream( x, inputStream, size );
The goal is to avoid writing the image to file.. Is this possible?
So in other words:
public void storeImage( Image image ){
  // need to fill in the blank here --- imaginary :
  // image.magicallyConvertToPNG();
  // InputStream is = image.getMagicalInputStream();
  PreparedStatement s = mysql.prepareStatement( INSERT_SQL );
  s.setBinaryStream( 1, is, size );
  s.executeUpdate();
  s.close();
  mysql.close();
}Ridiculous code aside, I hope this conveys the intention!
Thanks!

While I'm surprised that BufferedImage is giving you problems, the standard way to draw BufferedImage is to call:
drawRenderedImage(RenderedImage im, AffineTransform xform)
The AffineTransform lets you scale and translate the image.

Similar Messages

  • How to get a string or byte array representation of an Image/BufferedImage?

    I have a java.awt.Image object that I want to transfer to a server application (.NET) through a http post request.
    To do that I would like to encode the Image to jpeg format and convert it to a string or byte array to be able to send it in a way that the receiver application (.NET) could handle. So, I've tried to do like this.
    private void send(Image image) {
        int width = image.getWidth(null);
        int height = image.getHeight(null);
        try {
            BufferedImage buffImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            ImageIcon imageIcon = new ImageIcon(image);
            ImageObserver observer = imageIcon.getImageObserver();
            buffImage.getGraphics().setColor(new Color(255, 255, 255));
            buffImage.getGraphics().fillRect(0, 0, width, height);
            buffImage.getGraphics().drawImage(imageIcon.getImage(), 0, 0, observer);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(stream);
            jpeg.encode(buffImage);
            URL url = new URL(/* my url... */);
            URLConnection connection = url.openConnection();
            String boundary = "--------" + Long.toHexString(System.currentTimeMillis());
            connection.setRequestProperty("method", "POST");
            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
            String output = "--" + boundary + "\r\n"
                          + "Content-Disposition: form-data; name=\"myImage\"; filename=\"myFilename.jpg\"\r\n"
                          + "Content-Type: image/jpeg\r\n"
                          + "Content-Transfer-Encoding: base64\r\n\r\n"
                          + new String(stream.toByteArray())
                          + "\r\n--" + boundary + "--\r\n";
            connection.setDoOutput(true);
            connection.getOutputStream().write(output.getBytes());
            connection.connect();
        } catch {
    }This code works, but the image I get when I save it from the receiver application is distorted. The width and height is correct, but the content and colors are really weird. I tried to set different image types (first line inside the try-block), and this gave me different distorsions, but no image type gave me the correct image.
    Maybe I should say that I can display the original Image object on screen correctly.
    I also realized that the Image object is an instance of BufferedImage, so I thought I could skip the first six lines inside the try-block, but that doesn't help. This way I don't have to set the image type in the constructor, but the result still is color distorted.
    Any ideas on how to get from an Image/BufferedImage to a string or byte array representation of the image in jpeg format?

    Here you go:
      private static void send(BufferedImage image) throws Exception
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "jpeg", byteArrayOutputStream);
        byte[] imageByteArray = byteArrayOutputStream.toByteArray();
        URL url = new URL("http://<host>:<port>");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");
        OutputStream outputStream = connection.getOutputStream();
        outputStream.write(imageByteArray, 0, imageByteArray.length);
        outputStream.close();
        connection.connect();
        // alternative to connect is to get & close the input stream
        // connection.getInputStream().close();
      }

  • Display images from a SQL database

    I want to display images from a SQL database. The images are in a table under a specific column and are stored as a link to the image. How would I display the images from the column in LabVIEW?
    I'm using LabVIEW 2013 version 13 and SQL Server 2012
    Paul Power
    I have not lost my mind, it's backed up on a disk somewhere

    Hi PauldePaor,
    I hope you are well.
    Once you have pulled the data from the database into LabVIEW in a string form (or path), you can simply use the Read BMP File (Or jpg, png depending on the file type) VI.
    More information can be found here:
    http://digital.ni.com/public.nsf/allkb/02971A30F5D8FC6986256A0A004F11A0
    Kind Regards,
    Aidan H
    Applications Engineer
    National Instruments UK & Ireland

  • Save an Image in a MySQL database

    I am trying to save an image in a MySQL database. This is what I have done so far; I have created a table with one of the variables called
    photo  blob, this is what you use to save an image right?
    When I write the image to the database after getting connected to it is where I am stuck, so far I can save Ints, Strings and Enum s values but I do not know how to convert my image into a Blob and save the blob. I have been doing some light reading and I am guessing I have to convert the image into a Stream of some sort. What type of stream I do not know. This is the java command I have to save the Blob but do not know what to use as the variable for the Blob.
    prst.setBlob(5,  "??????");As you can tell by the ????? marks, I do not know how to convert my image into the proper data type(whatever the data type is?) to save the contents into the database.
    If somebody has the exact copy of the all the java coded steps that is needed to save an image as a Blob into a prepared database, that would be extremelu helpful to me.
    Thank-you.

    The answer has to be quite simple. If you do not have
    the answer please do not reply.Unfortunately it's not simple. This is one of my betes noire about the java libaries. The Blob stuff has gaping holes in it. There's no method, anywhere, to create a new Blob or Clob (also the design of the Blob and Clob interfaces tends to miss the point).
    The ways arround this, there being no legitimate approach, vary with the database provider.
    If the program an the server are running on the same machine (or files can be shared through NFS or the like) you can try the "LOAD_FILE" function.
    With some databases I believe setBinaryStream instead of setBlob works, but I'm not sure the mySql driver is that smart.

  • Why is Firefox 10 insisting on saving images (jpg, png,gif) as filename.extension.rb?

    After I upgraded to Firefox 10, when I attempt to save images, for example, the firefox-54x62.png on this page, Firefox offers to save the image as "firefox-54x62.png.rb" with image type "PNG image"

    Inspect the MIME database key with the registry editor (regedit.exe) and do a search for that MIME type (file extension) via Ctrl+F.<br />
    Be careful with editing the registry as there is no Undo possible: all changes are applied immediately.<br />
    You can export key(s) before making changes.<br />
    MIME Database : HKEY_CLASSES_ROOT\MIME\Database\Content Type
    You can also check those file extension in the main HKEY_CLASSES_ROOT\ branch.

  • How to save JFrame image as png format?

    hello all..
    i've encountered some problem while i using my Java3D to load my VRML file & save it in png format.
    i've loaded the VRML file in my Java 3D and display it on the JFrame.
    now, i want to save the image as PNG format, but i can't save the image, but just save the background & canvas.
    here's my code:
    Button button = new Button("Save image");
    button.addActionListener( new ActionListener()
    public void actionPerformed(ActionEvent event)
    RenderedImage image = myCreateImage();
    // Write generated image to a file
    try {
    FileDialog fd = new FileDialog(f, "Save as PNG", FileDialog.SAVE);
    fd.show();
    String name= fd.getFile();
    // Save as PNG
    ImageIO.write((RenderedImage)image, "png", new File(name));
    catch (IOException e) {}
    content_pane.add(button, BorderLayout.SOUTH);
    try
    FileReader fr = new FileReader( "TS.java" );
    BufferedReader br = new BufferedReader(fr);
    catch(Exception e) {}
    pack();
    setLocationRelativeTo( null );
    setSize(800, 600);
    setLocation(0, 40);
    setVisible(true);
    setBackground(Color.white);
    public RenderedImage myCreateImage() {
    int width = 800;
    int height = 600;
    // Create a buffered image in which to draw
    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = bufferedImage.createGraphics();
    g2d.dispose();
    return bufferedImage;
    private void loadFile(String file) {
    int flag = VRML97Loader.LOAD_ALL;
    if(staticLoad)
    flag &= ~VRML97Loader.LOAD_BEHAVIOR_NODES;
    VRML97Loader loader = new VRML97Loader(flag);
    // if the file is a directory, ignore it
    File f = new File(file);
    if(f.exists() && !f.isFile()) {
    System.out.println("Can't load directories specified");
    System.exit(1);
    URL url = null;
    Scene scene = null;
    try {
    if(url != null)
    scene = loader.load(url);
    else
    scene = loader.load("vrml/fish.wrl");
    } catch(Exception e) {
    System.out.println("Exception loading URL:" + e);
    e.printStackTrace();
    System.exit(0);
    urlLabel.setText("File " + file);
    if (scene != null) {
    // get the scene group
    sceneGroup = scene.getSceneGroup();
    sceneGroup.setCapability(BranchGroup.ALLOW_DETACH);
    sceneGroup.setCapability(BranchGroup.ALLOW_BOUNDS_READ);
    sceneGroup.compile();
    // add the scene group to the scene
    examineGroup.addChild(sceneGroup);
    // now that the scene group is "live" we can inquire the bounds
    setViewpoint();
    // setupBackground(scene);
    // setupLighting(scene);

    Your g2d is doring nothing!
    Indent your code.
    class{
       type data1;
       type data2;
       type method(){
           statement;
            clause{
               statement;

  • Convert a Tiff Image to png and show

    Hello;
    I wanto to convert a Tif image to png and show this in my web page but i dont want to save the png iamge in my server.
    Actualy i do that:
    byte[] bytes = imagenData;
                    ByteArraySeekableStream tiffStrm = new ByteArraySeekableStream(bytes);
                    String[] CdcNms = ImageCodec.getDecoderNames(tiffStrm);
                    ImageDecoder tifDecoder = ImageCodec.createImageDecoder(CdcNms[0], tiffStrm, new TIFFDecodeParam());
    //                 Check the number of pages
                    int IFDs = tifDecoder.getNumPages();
    //                 Get the first page
                    RenderedImage ren = tifDecoder.decodeAsRenderedImage(1);
                    byte[] bytes2 = doSingleConversion(ren);AND
    protected byte[] doSingleConversion(RenderedImage tifImage) throws Exception
              byte[] bytes = null;
              String out = "temp.png";
              try {
                   //      Create the PNG file
                   PNGEncodeParam pngParm = PNGEncodeParam.getDefaultEncodeParam(tifImage);
                   JAI.create("filestore", tifImage, out, "PNG", pngParm);
                   //Read the file into a byte array
                   File f = new File(out);
                   FileInputStream in = new FileInputStream(f);
                   bytes = new byte[(int) f.length()];
                   in.read(bytes);
                   in.close();
                   return bytes;
              catch(Exception e) {
                   e.printStackTrace ();
                   throw(e);
         }But this code save de image in the server; it�s posible do it without save.

    Numbers the iWorks program? Not sure you can convert it to that or just a list of numbers. Never heard of anyone that would even want to convert an Image file, Photo, to any other format. Other then another image format like JPG, PNG or a PSD Photoshop file.

  • How to insert an image file in Oracle database

    hi
    can you please tell me how to insert an image file into oracle database????
    suppose there is one image file in c:\pictures\rose.jpg. how to insert that file into database? theoretically i know that will be BFILE type but i dont know how to insert that.
    will be waiting for your reply........
    thanks & regards,
    Priyatosh

    Hello,
    The easiest way to load a blob is to use SQL loader.
    This example comes from the utilities guide:
    LOAD DATA
    INFILE 'sample.dat'
    INTO TABLE person_table
    FIELDS TERMINATED BY ','
    (name CHAR(20),
    1 ext_fname FILLER CHAR(40),
    2 "RESUME" LOBFILE(ext_fname) TERMINATED BY EOF)
    Datafile (sample.dat)
    Johny Quest,jqresume.txt,
    Speed Racer,'/private/sracer/srresume.txt',
    Secondary Datafile (jqresume.txt)
    Johny Quest
    500 Oracle Parkway
    Secondary Datafile (srresume.txt)
    Loading LOBs
    10-18 Oracle Database Utilities
    Speed Racer
    400 Oracle Parkway
    regards,
    Ivo

  • How to insert a image file into oracle database

    hi all
    can anyone guide me how to insert a image file into oracle database now
    i have created table using
    create table imagestore(image blob);
    but when inserting i totally lost don't know what to do how to write query to insert image file

    Hi I don't have time to explain really, I did have to do this a while ago though so I will post a code snippet. This is using the commons file upload framework.
    Firstly you need a multi part form data (if you are using a web page). If you are not using a web page ignore this bit.
    out.println("<form name=\"imgFrm\" method=\"post\" enctype=\"multipart/form-data\" action=\"FileUploadServlet?thisPageAction=reloaded\" onSubmit=\"return submitForm();\"><input type=\"FILE\" name=\"imgSource\" size='60' class='smalltext' onKeyPress='return stopUserInput();' onKeyUp='stopUserInput();' onKeyDown='stopUserInput();' onMouseDown='noMouseDown(event);'>");
    out.println("   <input type='submit' name='submit' value='Submit' class='smalltext'>");
    out.println("</form>"); Import this once you have the jar file:
    import org.apache.commons.fileupload.*;Now a method I wrote to upload the file. I am not saying that this is correct, or its the best way to do this. I am just saying it works for me.
    private boolean uploadFile(HttpServletRequest request, HttpSession session) throws Exception {
            boolean result = true;
            String fileName = null;
            byte fileData[] = null;
            String fileUploadError = null;
            String imageType = "";
            String error = "";
            DiskFileUpload fb = new DiskFileUpload();
            List fileItems = fb.parseRequest(request);
            Iterator it = fileItems.iterator();
            while(it.hasNext()){
                FileItem fileItem = (FileItem)it.next();
                if (!fileItem.isFormField()) {
                    fileName = fileItem.getName();
                    fileData = fileItem.get();
                    // Get the imageType from the filename extension
                    if (fileName != null) {
                        int dotPos = fileName.indexOf('.');
                        if (dotPos >= 0 && dotPos != fileName.length()-1) {
                            imageType = fileName.substring(dotPos+1).toLowerCase();
                            if (imageType.equals("jpg")) {
                                imageType = "jpeg";
            String filePath = request.getParameter("FILE_PATH");
            session.setAttribute("filePath", filePath);
            session.setAttribute("fileData", fileData);
            session.setAttribute("fileName", fileName);
            session.setAttribute("imageType", imageType);
            return result;  
         } And now finally the method to actually write the file to the database:
    private int writeImageFile(byte[] fileData, String fileName, String imageType, String mode, Integer signatureIDIn, HttpServletRequest request) throws Exception {
            //If the previous code found a file that can be uploaded then
            //save it into the database via a pstmt
            String sql = "";
            UtilDBquery udbq = getUser(request).connectToDatabase();
            Connection con = null;
            int signatureID = 0;
            PreparedStatement pstmt = null;
            try {
                udbq.setUsePreparedStatements(true);
                con = udbq.getPooledConnection();
                con.setAutoCommit(false);
                if((!mode.equals("U")) || (mode.equals("U") && signatureIDIn == 0)) {
                    sql = "SELECT SEQ_SIGNATURE_ID.nextval FROM DUAL";
                    pstmt = con.prepareStatement(sql);
                    ResultSet rs = pstmt.executeQuery();
                    while(rs.next()) {
                       signatureID = rs.getInt(1);
                    if (fileName != null && imageType != null) {
                        sql = "INSERT INTO T_SIGNATURE (SIGNATURE_ID, SIGNATURE) values (?,?)";
                        InputStream is2 = new ByteArrayInputStream(fileData);
                        pstmt = con.prepareStatement(sql);
                        pstmt.setInt(1, signatureID);
                        pstmt.setBinaryStream(2, is2, (int)(fileData.length));
                        pstmt.executeUpdate();
                        pstmt.close();
                        con.commit();
                        con = null;
                if(mode.equals("U") && signatureIDIn != 0) {
                    signatureID = signatureIDIn.intValue();
                    if (fileName != null && imageType != null) {
                        sql = "UPDATE T_SIGNATURE SET SIGNATURE = ? WHERE SIGNATURE_ID = ?";
                        InputStream is2 = new ByteArrayInputStream(fileData);
                        pstmt = con.prepareStatement(sql);
                        pstmt.setBinaryStream(1, is2, (int)(fileData.length));
                        pstmt.setInt(2, signatureID);
                        pstmt.executeUpdate();
                        pstmt.close();
                        con.commit();
                        con = null;
            } catch (Exception e) {
                con = null;
                throw new Exception(e.toString());
            return signatureID;
       }

  • How to store image in the oracle database 10.2.

    Hi.,
    I am working on 10g ids. I have designed a form where there are two fields. Name and picture.
    I want to keep details of the person with their photo.
    I can simply put name but how to insert image in the picture field??
    can you suggest ??
    Thanks.
    Shyam

    Hi
    To store your binary images in an Oracle database, you will need to create a column in your table defined with the BLOB datatype BLOB stands for Binary Large Object. Images from scanners, mpeg files, movie files and so on can all be stored in the BLOB column
    sq>CREATE TABLE test_table (
       id NUMBER,
       image BLOB);then go to
    [http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10796/toc.htm]

  • Dragging images to the desktop copies image as .png instead of .jpg

    I have nearly identical computers at home and work. Both are XP Pro, with Firefox 3.6.
    When I drag an image out of a web page, onto the desktop, my home computer saves/names the image as a .jpg, but my work computer saves/names the image as .png.
    I want my work computer to save/name the image as .jpg. How do I change it?

    Do you get a real PNG file or a JPG file that has a .png file extension?

  • Saving images to PNG

    Hi,
    I'm trying to save my images to PNG so that I can upload them on the web. I need the images to be a specific size - which I stipulate via the artboard size.
    However when I try to save my images (via File, Save for Web and Devices) the image never saves to the size/outline of the artboard.
    Does anyone know why this happens and how I can get my images to save to the pixel size that I need?
    I'm using Windows 7 and have Illustrator CS5
    Thanks

    When you create your original document do you set the profile to Web and check that the ppi/dpi settings are the same as the output you need for your webpage?

  • How do i place an image, jpeg png or otherwise in my Signature in Mail?

    How do I place an image, jpeg, png, or otherwise in my Signatures inside of the Mail Application?

    Go to mail>prefeferences>signatures, select new with plus key signature left column,highlight that signature. Drag image into right cloumn

  • Image = JAI.create("stream",bass) problem

    I get the exception "Stream - Parameter value`s class (com.sun.media.jai.codec.ByteArraySeekableStream) is not an instance of the parameter class (com.sun.media.jai.codec.SeekableStream) for parameter "stream".
    " with the following code - not sure why - thanks in advance
    ByteArraySeekableStream bass = new ByteArraySeekableStream
    (fileData.toByteArray());
    image = JAI.create("stream",bass);
    Steve

    I got this to work, but the above method should also work:
    ByteArraySeekableStream bass = new ByteArraySeekableStream(imageData);
    if ( imageFormat.compareToIgnoreCase(ImageAttributes.Format_JPEG) == 0 )
    JPEGImageDecoder imageDecoder = new JPEGImageDecoder(bass,null);
    RenderedImage ri = imageDecoder.decodeAsRenderedImage();
    retValue = PlanarImage.wrapRenderedImage(ri);
    }

  • Saving image as png

    Hi, i have a simple question, at least i hope so...:
    i tried to save an image in png file format. I tried several possibilities, but always its saying, that its not an image.
    I used "IMAQ Writefile" for this, but the same problem occures with similar VI's. Drawing the image with "IMAQ winddraw" works though.
    So i want to know, if someone could tell me the simplest way of how i can save an image?
    THX
    Sometimes my knowledge is just ... .... lol
    Attachments:
    partbeforsaving.vi ‏27 KB

    Hello,
    Here is a little help.
    I think you need to learn about the basics IMAQ functions, I suggest you have a look at some example (Help > Find Examples and then search for IMAQ).
    Hope this helps
    When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"
    Attachments:
    help.vi ‏14 KB

Maybe you are looking for