Base64 encode and image

Hi there
I am writing an adobe air app in html/javascript and I am trying to base64 encode an image so I can add it to and XML RPC request. I have tried many methods and nothings seems to work.
I see that actionscript has a Base64Encoder class that look like it would work, is there any way to utilize this in javascript?
Thanks,
Jordan

Reading it in as an ASCII string loses information - you're much better off reading it in byte-for-byte. Then you can send it as the serializeable of your choice (even a BigInteger would work).

Similar Messages

  • Base64 encoded attachments misunderstood by recipients

    My boss uses Mail.app, and a number of people have reported that they can never open her attachments. When I look at the files they receive from her, they appear to be base64 encoded, and indeed decoding them makes them perfectly readable. Unfortunately, I don't think any of the built-in apps in OS X can do this decoding. Also, not all of the recipients use Macs.
    At first I thought that the issue might be that she was not using the 'Windows friendly attachments'. However, I tried sending a message from another coworker's computer without selecting that option, and it worked fine. I then discovered that the problem is that if she drags her attachments into the message rather than selecting them via 'add attachment', they don't work. Basically, if the attachment is inline rather than at the end of the message.
    I still thought that using 'Windows friendly attachments' would fix the problem, so on another Mac I tried setting Mail.app to always send Windows Friendly attachments (To do this, just open Mail.app, make sure you aren't composing an e-mail, and then under Edit > Attachments, select 'Always send Windows Friendly attachments'). However, this didn't work, either.
    So, I think that the solution is just to tell her either to use the 'Add Attachment' button or to drag the file to the end of the message.
    It's a shame that inline attachments don't work for so many e-mail clients (notably Gmail). I don't think that this is an Apple innovation... is it?
    I hope that helps someone,
    Greg

    Did you ever this to work ?

  • Need to Base64 encode a String but How?

    Hi everone:
    I have to Base64 encode and decode a String, but I haven't found any method or API to do it. Does anybody know where to find it? Some ideas about how to?
    Thank you all.
    Jose.

    Hi everone:
    I have to Base64 encode and decode a String, but I
    haven't found any method or API to do it. Does anybodyOh, one thing struck me, why do you need to Base64 encode character data? Normally Base64 is used to encode binary data. If you can represent the bytes as a UTF-8 encoded String, and all components can handle UTF-8, then you should be fine without Base64.
    know where to find it? Some ideas about how to?
    Thank you all.
    Jose.

  • Base 64 Encoding and Decoding

    Hi,
    I am in need of a standard Java API from either sun's implementation or from SAP's implementation to perform Base64 encoding and decoding...
    Can someone please provide me the links to get the same ?
    Thanks & Regards,
    Gurushant S.H

    Hi Gurushant,
    first, welcome on SDN forums!
    About your question: See SAP's Base64 secKey encoding
    Hope it helps
    Detlev
    PS: Please consider rewarding points for helpful answers on SDN. Thanks in advance!

  • Get canvas.toDataURL('image/jpeg') and convert base64 encoding to java.sql.Blob

    Convert canvas.toDataURL('image/jpeg') to java.sql.Blob.
    I am using oracle adf so I am able to action a backing bean from javascript and pass in parameters as a map. I pass in the canvas.toDataURL('image/jpeg') which I then try to decode in my bean. Using BASE64Decoder and the converting the bytearray to a file I can see the image is corrupted as I can't open the file thus converting the bytearray to blob is also a waste.
    Has anyone any ideas on base64 encoding from canvas.toDataURL to file or Blob?

    Use Case:
    A jsf page that enables a user to take photos using the HTML5 canvas feature - interact with webcam -, take photos and upload to profile
    1. I have created the jsf page with the javascript below; this pops up as a dialog and works okay and onclick an upload image, triggers the snapImage javascript function below and sends the imgURL parameter to the serverside managedbean
    <!-- java script-->
    function snapImage(event){
                    var canvas = AdfPage.PAGE.findComponent('canvas');
                    AdfCustomEvent.queue(event.getSource(),"getCamImage",{imgURL:canvas.toDataURL('image/jpeg'),true);
                    event.cancel();
    <!-- bean -->
    public void getCamImage(ClientEvent ce){
    String url=(String)ce.getAttributes().get("imgURL");
    decodeBase64URLToBlob(url);
    private BlobDomain decodeBaseB4URLToBlob(String url64){
                    BASE64Decoder de=new BASE64Decoder();
                    byte[] bytes=de.decode(url64);
                    File file=new File("abc.jpg");
                    InputStream in = new ByteArrayInputStream(bytes);
                    BufferedImage bImageFromConvert = ImageIO.read(in);
                    in.close();
                    ImageIO.write(bImageFromConvert, "jpg", file);
                    return createBlobDomainFromFile(file);
    ----problem---
    Accessing the generated jpeg file shows the image is corrupted, probably missing bytes or encode/decoder issues.and the blob image after uploading to database is saved as a binary stream which ondownload doesnt render as an image or anything i know of.
    Is there anyways of achieving the conversion without errors?

  • Encode and Decode the Image

    Hi,
    I have a requirement like to encode the image(anyone of type:-jpg.gif) byte Array and placed into XML file.
    I can use this xml file as datasource in BIRT,decode the byte data and bind to Image.
    so I need to encode and decode the Image with predefined Libraries,
    Could anyone Help to me.
    Thanks and Regards
    Swetha.

    Get the name of the file.
    Read the file as bytes
    Encode the bytes as base64 string
    Insert name into a XML element
    Insert base64 into a XML element
    Reverse to extract.
    Image libraries have nothing to do with that process.

  • File saveAsOpen and Base64 encoding...

    In order to send the activeDocument to a web service, i need to save is as a file image, and send in an xml format.
    Thus, i also need to encode it in Base64.
    At this point everything is OK.
    But between the saveAs of the file, its reopening, and its encoding, its corrupted.
    I receive an error on the Mongrel server.
    The Base64 encoder seems to work well, the rest of the code seem to be also ok, so I think my problem is either I do not save it correctly, either i do not reopen it correctly...
    Please save me :(
    Here is the code :
              /* STEP 1 : save current document as image file (temporary) */
              var docRef = activeDocument;
              var filepath=app.path.toString()+"/"+docRef.name+".jpg";//create the image file in the installation folder of Photoshop
              var file = new File(filepath);
              //var options = new ExportOptionsSaveForWeb();
              //options.format = SaveDocumentType.PNG;
              var options = new JPEGSaveOptions();
              options.quality=8;
              docRef.saveAs (file, options, true, Extension.LOWERCASE);
              //docRef.exportDocument (file, ExportType.SAVEFORWEB , options);
              file.close();
    /* I code here dialogBox and httpCOnenction object creation
    that do not need to be written here
    (but if you think it's important, i can give you the full script)
              var f= new File(filepath);
              f.open();
              var buffer = f.read(f.length);
              f.close();
    I build an HttpConnection object called "send"
    */                 send.request='"+f.name+""+f.length+""+base64encode(buffer)+"';
    Here is the Server error :
    Exception working with image: Not a JPEG file: starts with 0xc7 0xff `/var/folders/Nz/NzlixjchF+WAvFkZK9vVRU+++TM/-Tmp-/test599-0.jpg'

    Let's give you everything in fact, it will be more simple (by the way the code is suppose to become OpenSource)<br /><br />I work on Mac, Photoshop CS3 (10.0.1)<br />I use JavaScript<br />HTTP request received by a Mongrel server (Ruby on Rails)<br /><br />// Copyright 2008. Studio Melipone. All rights reserved. <br />// Licence GNU LGPL<br />// Send the active document to the UpShot web service (http://upshotit.com)<br />//  The document is sent as a .png file, as a draft on the user's account.<br />// Therefore you must have a document opened and Adobe Bridge installed to perform this script.<br /><br />/*<br />     <javascriptresource><br />          <name>UpShot</name><br />          <type>automate</type><br />          <about><br />          Script for Upshot <br />          Copyright 2008 Studio Melipone <br />          http://upshotit.com <br />          </about><br />          <enableinfo>true</enableinfo><br />     </javascriptresource>     <br />*/<br /><br />#target photoshop<br />#include "Base64.jsx"<br /><br />app.bringToFront();<br /><br />if( documents.length==0)// is a document opened ?<br />     alert("There are no Photoshop documents opened !")<br />else {<br />          /*********************************************/<br />          /* STEP 1 : save current document as image file (temporary) */<br />          /******************************************/<br />          var docRef = activeDocument;<br />          var filepath=app.path.toString()+"/"+docRef.name+".jpg";//create the image file in the installation folder of Photoshop<br />          var file = new File(filepath);<br />          //var options = new ExportOptionsSaveForWeb();<br />          //options.format = SaveDocumentType.PNG;<br />          var options = new JPEGSaveOptions();<br />          options.quality=8;<br />          docRef.saveAs (file, options, true, Extension.LOWERCASE);<br />          //docRef.exportDocument (file, ExportType.SAVEFORWEB , options);<br />          file.close();<br />          <br />          /********************************************************/<br />          <br />     // Only Bridge can use HttpConnection, so we test if it is installed<br />     var bridgeTarget = BridgeTalk.getSpecifier(getAppSpecifier("bridge")); <br />                    <br />     if( !bridgeTarget ) { <br />          alert("Adobe Bridge not installed, needed to continue."); <br />     } <br />     else {     <br />          preferences.rulerUnits = Units.PIXELS;<br />          displayDialogs = DialogModes.NO;<br />          <br />          /**********************************/<br />          /* STEP 2 : retrieve user's login & password */<br />          /*******************************/<br />          <br />          res = "dialog { text: 'UpShot authentication', \<br />                         info: Panel { orientation: 'column', alignChildren:'right', \<br />                                             text: 'Please Identify Yourself', \<br />                                             login: Group { orientation: 'row', \<br />                                                  s: StaticText { text:'Login :' }, \<br />                                                  e: EditText { characters: 30 } \<br />                                             }, \<br />                                             passwd: Group { orientation: 'row',  \<br />                                                  s: StaticText { text:'Password :' }, \<br />                                                  e: EditText { characters: 30, properties:{noecho: true} }, \<br />                                             } \<br />                                   }, \<br />                         buttons: Group { orientation: 'row', \<br />                                        okBtn: Button { text:'OK', properties:{name:'ok'} }, \<br />                                        cancelBtn: Button { text:'Cancel', properties:{name:'cancel'} } \<br />                         } \<br />                    }"; <br />          <br />          dlg = new Window (res); <br />          dlg.center(); <br />          dlg.show(); <br /><br />          var login = dlg.info.login.e.text;//retrieve the values given in the form<br />          var pass = dlg.info.passwd.e.text;<br /><br />          /******************************/<br />          /* STEP 3 : send image through Bridge */<br />          /***************************/<br />          var f= new File(filepath);<br />          f.open();<br />          var buffer = f.read(f.length);<br />          f.close();<br />          <br />          alert("file size "+file.length);<br />          alert("f size "+f.length);<br />          alert("BUF "+buffer);<br />          alert(base64encode("B64 "+base64encode(buffer)));<br />          <br />          // create a new BridgeTalk message object <br />          var bt = new BridgeTalk; <br />          // target the Adobe Bridge application <br />          bt.target  = bridgeTarget; <br />          //p173 of Javascript Tools Guide for CS3 for http message<br />          bt.body = "\<br />               if(!ExternalObject.webaccesslib ) {\<br />                    ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');\<br />               }\<br />               var http = new HttpConnection('http://127.0.0.1:3000/en/users/get_id.xml') ; \<br />               var idfile = new File('"+app.path.toString()+"/id.xml') ;\<br />               http.response = idfile ; \<br />               http.username = '"+login+"';\<br />               http.password = '"+pass+"';\<br />               http.mime='text/xml';\<br />               http.responseencoding='utf8';\<br />               http.execute();\<br />               http.response.close();\<br />               http.close();\<br />               idfile.open();\<br />               var send = new HttpConnection('http://127.0.0.1:3000/en/users/'+idfile.read()+'/upshots') ; \<br />               send.method = 'POST';\<br />               send.username = '"+login+"';\<br />               send.password = '"+pass+"';\<br />               send.mime='text/xml';\<br />               send.requestheaders=['Host','http://localhost:3000'];\<br />               send.requestheaders=['Accept','*/*'];\<br />               send.requestheaders=['Content-Type','text/xml'];\<br />               send.request='<upshot><title>titleforyourimage</title><file_name>"+f.nam e+"</file_name><size>"+f.length+"</size><javafile>"+base64encode(buffer)+"</javafile></ups hot>';\<br />               send.execute();\<br />               idfile.toSource();\<br />          ";<br />          <br />          bt.onResult = function(result) { <br />               object = bt.result = eval(result.body);<br />               //file.remove();<br />               //object.remove();<br />               //bridge.quit ();<br />               return eval(result.body); <br />          } ;<br />          <br />          bt.onError = function( message ) { <br />               var errCode = parseInt (message.headers ["Error-Code"]); <br />               throw new Error (errCode, message.body); <br />          } ;<br />                    <br />          //send the message ( also launch the targetted application)<br />          bt.send(10);<br />     <br />     /**********************************************/<br />     /* STEP 4: Once all done, delete the image previously created */<br />     /*******************************************/<br />     }<br />}<br /><br />//////////////////////////////////////////////////////////////////<br />/////////////////////////////////////////////////////////////////<br />/*functions from http://www.ps-scripts.com/bb/viewtopic.php?t=1282 */<br />//////////////////////////////////////////////////////////////<br />/////////////////////////////////////////////////////////////<br /><br />function getAppSpecifier(appName) {<br /><br />   if (isCS2()) {<br />      if (appName == 'photoshop') {<br />         return 'photoshop-9.0';<br />      }<br />      if (appName == 'bridge') {<br />         return 'bridge-1.0';<br />      }<br />      // add other apps here<br />   }<br /><br />   if (isCS3()) {<br />      if (appName == 'photoshop') {<br />         return 'photoshop-10.0';<br />      }<br />      if (appName == 'bridge') {<br />         return 'bridge-2.0';<br />      }<br />      // add other apps here<br />   }<br /><br />   return undefined;<br />};<br /><br />function isCS2() {<br />   var appName = BridgeTalk.appName;<br />   var version = BridgeTalk.appVersion;<br /><br />   if (appName == 'photoshop') {<br />      return version.match(/^9\./) != null;<br />   }<br />   if (appName == 'bridge') {<br />      return version.match(/^1\./) != null;<br />   }<br /><br />   return false;<br />};<br />function isCS3() {<br />   var appName = BridgeTalk.appName;<br />   var version = BridgeTalk.appVersion;<br /><br />   if (appName == 'photoshop') {<br />      return version.match(/^10\./) != null;<br />   }<br />   if (appName == 'bridge') {<br />      return version.match(/^2\./) != null;<br />   }<br /><br />   return false;<br />};

  • Need help loading base64 encoded image.

    I've got an applet that saves an image into a database by posting a base64 encoded version of the image to an ASP page. Basically, I convert the image to an array of bytes, then encode it and post it to the page. Now, my problem occurs after I read the base64 string from the database and try to display it. When the application is started up, it is supposed to read the image and load it into the canvas of the applet, but I get a NullPointerException when I call displayImage because the fgImage has -1 width and height. If anyone has done this before and has any hints or tips, that would be great. Otherwise, take a look at my code and see if you can find something wrong. Thanks!
    public void loadBase64Image(int[] newPixels) {
    System.out.println("loading new image...");
    try {
    if (newPixels == null) {
    byte[] imgPixels = new byte[this.getWidth() * this.getHeight() * 4];
    URL loadURL = new URL(fgImgURL);
    URLConnection imageCon = loadURL.openConnection();
    imageCon.setDoOutput( true );
    imageCon.setUseCaches(false);
    DataInputStream imageIn = new DataInputStream( imageCon.getInputStream() );
    BASE64Decoder decodedImage = new BASE64Decoder();
    imgPixels = decodedImage.decodeBuffer(imageIn);
    imageIn.close();
    int w = this.getWidth();
    int h = this.getHeight();
    int imgPix[] = new int[w * h];
    int index = 0;
    for(int y=0; y<imgPix.length;y++){
    imgPix[y] = imgPixels[4*y]
    | (imgPixels[4*y + 1] >> 8)
    | (imgPixels[4*y + 2] >> 16)
    | (imgPixels[4*y + 3] >> 24);
    imgMemSrc = new MemoryImageSource(w, h, imgPix, 0, w);
    else
    imgMemSrc = new MemoryImageSource(this.getWidth(),this.getHeight(),newPixels,0,this.getWidth());
    // Update the fgImage to the current OSC.
    if (fgImage != null) fgImage.flush();
    fgImage = Toolkit.getDefaultToolkit().createImage(imgMemSrc);
    displayImage(fgImage, this.getWidth(), this.getHeight());
    catch (Exception e){
    System.out.println("BASE64 LOAD ERROR (" + e.getClass() + ": " + e.getMessage() + ")");

    Docs for URLConnection
    "A URL connection can be used for input and/or output. Set the DoInput flag to true if you intend to use the URL connection for input, false if not. The default is true unless DoOutput is explicitly set to true, in which case DoInput defaults to false."
    You have setDoOutput(true), so doInput is by default set to false according to the docs. I would make the change to also setDoInput(true) as well and see if it works.
    public void loadBase64Image(int[] newPixels) {
       System.out.println("loading new image...");
       try {
          if (newPixels == null) {
             byte[] imgPixels = new byte[this.getWidth() * this.getHeight() * 4];
             URL loadURL = new URL(fgImgURL);
             URLConnection imageCon = loadURL.openConnection();
             imageCon.setDoOutput( true );
             imageCon.setDoInput( true ); // Make sure you add this line
             imageCon.setUseCaches(false);
             DataInputStream imageIn = new DataInputStream( imageCon.getInputStream() );
             BASE64Decoder decodedImage = new BASE64Decoder();
             imgPixels = decodedImage.decodeBuffer(imageIn);
             imageIn.close();
             int w = this.getWidth();
             int h = this.getHeight();
             int imgPix[] = new int[w * h];
             int index = 0;
             for(int y=0; y<imgPix.length;y++){
                imgPix[y] = imgPixels[4*y] | (imgPixels[4*y + 1] >> 8) | (imgPixels[4*y + 2] >> 16) | (imgPixels[4*y + 3] >> 24);
             imgMemSrc = new MemoryImageSource(w, h, imgPix, 0, w);
          else
             imgMemSrc = new MemoryImageSource(this.getWidth(),this.getHeight(),newPixels,0,this.getWidth());
          // Update the fgImage to the current OSC.
          if (fgImage != null)
             fgImage.flush();
          fgImage = Toolkit.getDefaultToolkit().createImage(imgMemSrc);
          displayImage(fgImage, this.getWidth(), this.getHeight());
       catch (Exception e){
          System.out.println("BASE64 LOAD ERROR (" + e.getClass() + ": " + e.getMessage() + ")");

  • Since Firefox 4, I can get a background image to work using base64 encoded, but not a local file, this worked in Firefox 3, how do I resolve this.

    Using either of the 4 examples shown below, to have a background image display inside about:blank worked in Firefox 3.x (using Stylish add-on), however since Firefox 4, only using the base64 encoded version of images works. Is there any way to fix this so I don't have to encode every image I wish to use? Encoding the image makes the stylish file absolutely huge, & a real pain to keep encoding whenever I want to change the image.
    body:empty { background: url("resource:/res/images/OnFire.jpg")
    body { background-image: url("resource:/res/images/OnFire.jpg")
    body:empty { background:url("data:
    body { background-image: url("data:
    I've also previously disabled most of the add-ons, except for Status-4-Evar, Stylish, & Firebug, in an attempt to see if something else was interfering, but no change.
    I can supply a copy of the previously working (FF 3.x) code to some of the about:blank styles if needed for testing purposes.

    Type '''about:addons'''<enter> in the address bar to open the '''Add-ons Manager.'''
    Hot key; '''<Control>''(Mac:<Command>)'' <Shift> A)'''
    On the left side of the page, select '''Plugins.'''
    Is it listed here? Select '''Disable.'''

  • Flash Builder 4.5 SOAP call for images using Base64 Encoding

    I am trying to load some image meta data in a flash builder mobile application by making a SOAP call to .Net service. I am able to test the web service successfully using a .Net console application. However when I make the call from flash builder mobile client I get a null result. What am I doing wrong? I am using SOAP 1.1 ByteArray didn't work for Flash builder. So converted the ByteArray to Base64 format and tried to obtain result that way. Both ways worked from a .Net Client but not working from Flash mobile.
    Here is the code
    <fx:Script>
            <![CDATA[          
                import mx.graphics.ImageSnapshot;
                import mx.graphics.codec.JPEGEncoder;
                import mx.graphics.codec.PNGEncoder;
                import mx.rpc.AsyncToken;
                import mx.utils.Base64Encoder;         
                import services.exifimagemetadata1.ExifImageMetaData1;         
                import spark.components.Image;     
                public var metaData:ExifImageMetaData1 = new ExifImageMetaData1();         
                public var imageBytes:ByteArray = new ByteArray();
                public var gpsData:String;
        private function getBase64EncodedImage():String
                    var myEncoder:Base64Encoder = new Base64Encoder();
                    myEncoder.encodeBytes(getImageBytes());            
                    var image64BitText:String = myEncoder.toString();                          
                    return image64BitText;
        public function GetMetaDataFromExif():void{
                    var imageToken:AsyncToken = metaData.GetExifBase64Data(getBase64EncodedImage());               
                    gpsData = imageToken.result.toString();
                    metaResult.text = gpsData;
        protected function GetImageMetaDataFromExif(event:MouseEvent):void
                    GetMetaDataFromExif();         
            ]]>
        </fx:Script>
    <s:layout>
            <s:VerticalLayout>         
            </s:VerticalLayout>
        </s:layout>
        <s:HGroup>
            <s:Image id="test" width="130" height="140" source="@Embed(source='assets/p1000106.jpg')"/>
        </s:HGroup>
        <s:HGroup>
        <s:Label width="100" height="140" backgroundColor="Blue" click="GetImageMetaDataFromExif(event)">
            <s:text/>
        </s:Label>
        </s:HGroup>
        <s:HGroup>
            <s:Label id="metaResult" width="200" height="140" backgroundColor="yellow"/>           
        </s:HGroup>

    Hello everyone -
    Since I last posted an interesting update happened. I tested my  Flex application again, it is calling a Jetty Server that returns a JSON object, in different BROWSERS.  I disabled HTTPS for now, and the crossdomain.xml policy file is wide open for testing (ie. allowing every request to return data). So the app accessing the data using HTTP only. Browsers  -  IE, Opera, Firefox and Chrome. Each browser contained the SAME application, revision of the Flash Player (10.3.183.10 debugger for firefox, chrome, opera, safari PC; 11.0.1.129 consumer version in IE9,) take a look at the screen shot (safari not shown although the result was the same as IE and chrome)
    Note that Opera and Firefox returned successful values (i.e. successful JSON objects) using the same code generated from the Data Services Wizard. Chrome, IE and, Safari failed with an Internal error. So I am left wondering - WHY? Is it something with the Flash Player? the Browsers?  the Flex SDK? Any thoughts are appreciated. Again, the code is found in the original thread above.

  • Encode and Decode 16 bit grayscale image to jpeg2000

    i am trying to convert 10 bit grayscale raw image to jpeg 2000 using J2KImageWriter and i want it to convert back to grayscale raw image but when i am converting it it gives NULL.
    Here is my code
    public class Main {
    public static void main(String[] args) {
    if(args.length!=4)
    System.out.println("\nEnter imagefile height width header\n");
    System.exit(0);
    String filename=args[0];
    int height=Integer.parseInt(args[1]);
    int width=Integer.parseInt(args[2]);
    int header=Integer.parseInt(args[3]);
    try
    //reading the image data
    FileInputStream imagefile=new FileInputStream(filename);
    System.out.println("\nSize of image file:"+imagefile.available());
    System.out.println("\nHeader:"+String.valueOf(header)+" bytes\n");
    imagefile.skip(header);
    short pixels[]=new short[height*width];
    int i,j,k;
    k=0;
    for(i=0;i<height;i++)
    for(j=0;j<width;j++)
    int lsb=imagefile.read();
    int msb=imagefile.read();
    pixels[k]=(short)(msb<<8 | lsb);
    k++;
    //System.out.println(String.valueOf(pixels[i][j]));
    imagefile.close();
    DataBuffer buffer=new DataBufferUShort(pixels,width*height);
    SampleModel sm=RasterFactory.createBandedSampleModel(DataBuffer.TYPE_USHORT,height,width,1);
    Raster raster=RasterFactory.createWritableRaster(sm, buffer,new Point(0,0));
    //imagedata reading complete
    //conversion to jpeg 2000
    String outfile=args[0].substring(0,args[0].lastIndexOf('.'))+".jp2";
    File outimage=new File(outfile);
    ImageOutputStream imout=ImageIO.createImageOutputStream(outimage);
    J2KImageWriteParam j2kparam=new J2KImageWriteParam();
    J2KImageWriterSpi spi=new J2KImageWriterSpi();
    J2KImageWriter j2kwriter=new J2KImageWriter(spi);
    j2kparam.setLossless(true);
    j2kparam.setComponentTransformation(false);
    j2kparam.setEncodingRate(0.5f);
    j2kparam.setFilter(J2KImageWriteParam.FILTER_53);
    j2kparam.setNumDecompositionLevels(3);
    j2kparam.setWriteCodeStreamOnly(true);
    j2kwriter.setOutput(imout);
    j2kwriter.write(null,new IIOImage(raster,null,null),j2kparam);
    imout.close();
    J2KImageReaderSpi j2kspi=new J2KImageReaderSpi();
    J2KImageReader j2kreader=new J2KImageReader(j2kspi);
    ImageInputStream imin=ImageIO.createImageInputStream(outfile);
    j2kreader.setInput(imin, true, false);
    Raster decomp_raster=j2kreader.readRaster(1, null);
    int outputdata[]=new int[width*height];
    decomp_raster.getPixels(0,0,width,height,outputdata);
    FileOutputStream fileout=new FileOutputStream("decomp");
    for(i=0;i<height*width;i++)
    short temp=(short)outputdata;
    fileout.write(Short.valueOf(temp).byteValue());
    Short a=new Short(Short.reverseBytes(temp));
    fileout.write(a.byteValue());
    fileout.close();
    catch(Exception e)
    System.out.println(e.getMessage());
    Can anybody help me with this. Actually i need to study the performance of jpeg2000 compression using different setting of parameters.
    Thanks in advance.......

    Hi,
    I am able to encode and decode the image using J2Kwriter and J2Kreader classes. But now some other issue has came up.
    When compressed losslessly, the new jpeg2000 filesize is 415245 bytes. (My original file is of size 2000000 bytes)
    But when i am doing lossy compression, it results in following file sizes.
    Below 0.5 (encoding rate) - 535 bytes.
    Greater than or equal to 0.5 - 541 bytes.
    I tried with the following values of encoding rate - 0.1, 0.3, 0.5, 0.8, 1, 1000, 100000000, 500000000.
    I m not able to understand why i am getting the same filesize even with different encoding rate.
    How should i set the encoding rate parameter to achieve my target compression ratio.
    Kindly guide me. I will be very thankful to you.
    Preeti

  • Encode and Decode Base64

    Hi All,
    I need to Encode and Decode Base64 File. 
    Please let me know if there is any Function Modules or Class Methods to achieve the requirement.
    Thanks in advance.
    Regards
    Joseph
    Message was edited by: Joseph Brown

    Hi,
    This is the encoded base64 file in XML format:
    <?xml version="1.0" encoding="UTF-8"?>
    <Z_CREFO_DOC>
    <E_PDF><![CDATA[JVBERi0xLjMKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29k
    ZT4+CnN0cmVhbQp4nE2MPQ/CMAxEd/8Kj/aQEKehIWvFh8QElTfEVNFOGUr7/0UagcTd8vSkuxmd
    FY9u6wGDLs4rRA1dhfvvCeYIaDbbZU8c9Dxk7LMGG50RGkWsHobExpj7F1NjhBzfCgG5tAR/Z0
    5pYMN6Qs9OJACxuhlY0n5Kde4aRwL/0A6e4hnWVuZHN0cmVhbQplbmRvYmoKNiAwIG9iagoxMzEK
    ZW5kb2JqCjQgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNTk1LjIyIDg0Ml0KL1Jv
    dGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRXh0
    R1N0YXRlIDEwIDAgUgovRm9udCAxMSAwIFIKPj4KL0NvbnRlbnRzIDUgMCBSCj4+CmVuZG9iagoz
    IDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvS2lkcyBbCjQgMCBSCl0gL0NvdW50IDEKL1JvdGF0ZSAw
    Pj4KZW5kb2JqCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMyAwIFIKPj4KZW5kb2Jq
    CjcgMCBvYmoKPDwvVHlwZS9FeHRHU3RhdGUKL09QTSAxPj5lbmRvYmoKMTAgMCBvYmoKPDwvUjcK
    NyAwIFIPgplbmRvYmoKMTEgMCBvYmoKPDwvUjkKOSAwIFIPgplbmRvYmoKMTIgMCBvYmoKPDwv
    U3VidHlwZS9UeXBlMUMvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMyAwIFI+PnN0cmVhbQp4
    nGWSbUxTVxiAz23h3jtX60bTGAKWm2w4FUjAwLRiMAZkP0bQsYIY2UaBK97Zr/UD2lGghVYoR0BB
    ELJSaEEbDfAj7llOmUiFnWbxs0Moxkm25FfRBN3ksuydaybPuxPyfvOe953yfneQ+BYkSIIAiJ
    itOyprQivVati5TASCTxTxm8TYubJ3ZVvsJlQwIF6PJWIsiRlKjNHGwaOX4dYGuPISEhPE9J0n
    uXqDzchVHzUzW4qLDm5NSUn97yRDqVQyFbZ/Mkwea+KqdczmSFDDavQGLaszZzO5kdsaDVfJVGts
    hqMmRl1VxVZFy0rUGvYYk89pOINBX8Nsyd3KbE9Pz0iLLNuzmUKLljXqUxlOd4TTcWYbo9ZVMfu1
    bLWa0aqr2GiDPC1nNtqYzHRO9291IaetsJiYtRczhXolU8AUsdUWjdr4/wxC6AU270C+yaxi0hDK
    R8koA72GVKgYZSECSdG6iEQUgyrRE0JF3BCViSZFq6I/xRugQ8ofcN4DXRCoSYJPhZ3yw3vKdW/i
    Ilw+rpu1TbtCnjANYbL5rnPcGNROvjN0EB/CZTaWK6sw5GElLSgeZAH1y8M5QJcUwgKkynsXPp4K
    4zAe1vdl0tKVI9hnneIXp6y+uGfLPAnERpn3GRBynNvYsOc4baVkGpgigcbPQ/M37s5N/YSX8M/a
    BdVXb9wTiElhE6ZlXiFgJR5TjfhvfRySC7TnOvtvvj0bh33hWKhGIWFhAW1lXs2FVWqnurMRPT
    lY2ng0lS/jr2gf8CXI2if1Guih6Cd6Fy/KzHm/bWbyAZ3oHb4VnAzjr/Gl+mnDeOXlzLG0CPCx
    4LWS3zf3OHEuvbqPwjuanXtctBVCPmp3h70ff0fzNTGypdGurlFImC97dduBQwJVW3i3az4Gxu
    HAQsqYj4NWN8qe8yaok4PdTDVm2zZmBaSwUiOnTw1qoBEEmKx37NoEdI2VIrvBK7OhZhu/vq
    8b419k7HmqYoO6ezvh8/oEEHydRj7LWf2UVLXinv26Izxhs8Md9OQ/KxG98C18I5eltkBirIP0
    eJpcbW0tON6Nne2OkxGb3RZL5wcJu4tKc98OVi4eTrr5/ie1XhPWxL93TF/Kafr8VkXNSFOgYZau
    I2UFQnof1dXT2X4Gn8b9noA70sA9NtoykPDDnZv3r5pC+yeTBHRH/5F9BI/GXzg39vnsBLc9oJDC
    Oec1XhIk7v8ohm6RL4ZaLKnrcOtcDW5m1xOVlVuK7F4XK78HHcesLT4aGvCzPkjonyuSvTw9dC
    iobeGuOHTguOP2IfvZ0E5/+gpDxgH//rJQK6lsXQtYLkq60Uft3h2Bn185mPUnbW90Vn0z1DAYn9
    toAgoodJNTEroZJt5ATO0wOAxHwQQympZGvD0h5DZxHnrkBdB2m5LWDvIlg6AaJCfWLb440S2R
    LA5I1iP0F03p+8AKZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9iagoxMDk1CmVuZG9iago5IDAgb2Jq
    Cjw8L0Jhc2VGb250L1FaSEJGVCtUaW1lcy1Sb21hbi9Gb250RGVzY3JpcHRvciA4IDAgUi9UeXBl
    L0ZvbnQKL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMTYvV2lkdGhzWwoyNTAgMCAwIDAgMCAwIDAg
    MCAwIDAgMCAwIDAgMzMzIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCjAgMCAw
    IDAgNzIyIDAgNTU2IDAgMCAwIDAgMCAwIDAgMCAwCjU1NiAwIDAgMCA2MTEgMCAwIDAgMCAwIDAg
    MCAwIDAgMCAwCjAgMCAwIDAgMCA0NDQgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDAgMCAzODkgMjc4
    XQovRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL1N1YnR5cGUvVHlwZTE+PgplbmRvYmoKOCAwIG9i
    ago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL1FaSEJGVCtUaW1lcy1Sb21hbi9Gb250
    QkJveFswIC0xMCA2ODUgNjYyXS9GbGFncyA0Ci9Bc2NlbnQgNjYyCi9DYXBIZWlnaHQgNjYyCi9E
    ZXNjZW50IC0xMAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTAyCi9NaXNzaW5nV2lkdGggMjUwCi9D
    aGFyU2V0KC9lL0QvUC9GL3MvdC9UL3NwYWNlL2h5cGhlbikvRm9udEZpbGUzIDEyIDAgUj4+CmVu
    ZG9iagoyIDAgb2JqCjw8L1Byb2R1Y2VyKEdQTCBHaG9zdHNjcmlwdCA4LjE1KQovQ3JlYXRpb25E
    YXRlKEQ6MjAwNjAzMjExMjExMTYpCi9Nb2REYXRlKEQ6MjAwNjAzMjExMjExMTYpCi9UaXRsZShN
    aWNyb3NvZnQgV29yZCAtIERva3VtZW50MSkKL0NyZWF0b3IoUFNjcmlwdDUuZGxsIFZlcnNpb24g
    NS4yKQovQXV0aG9yKG11ZWxsZXJoKT4+ZW5kb2JqCnhyZWYKMCAxNAowMDAwMDAwMDAwIDY1NTM1
    IGYgCjAwMDAwMDA0NjYgMDAwMDAgbiAKMDAwMDAwMjM5OSAwMDAwMCBuIAowMDAwMDAwMzk4IDAw
    MDAwIG4gCjAwMDAwMDAyMzUgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMjE2
    IDAwMDAwIG4gCjAwMDAwMDA1MTQgMDAwMDAgbiAKMDAwMDAwMjE2MCAwMDAwMCBuIAowMDAwMDAx
    ODE3IDAwMDAwIG4gCjAwMDAwMDA1NTUgMDAwMDAgbiAKMDAwMDAwMDU4NSAwMDAwMCBuIAowMDAw
    MDAwNjE1IDAwMDAwIG4gCjAwMDAwMDE3OTYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxNCAv
    Um9vdCAxIDAgUiAvSW5mbyAyIDAgUgovSUQgWyityXEclVXSeoKdpGR5FFwppSkorclxHJVV0nqC
    naRkeRRcKaUpXQo+PgpzdGFydHhyZWYKMjU5NgolJUVPRgo=]]>
    </E_PDF>
    <C_ERROR></C_ERROR>
    </Z_CREFO_DOC>
    Can i pass all these characters or i need to transform it first, extract the value of the element and decode? Finally i need to write the decoded outcome to a file (a pdf file) to the hard drive (may be with: OPEN DATASET P_DATASET FOR INPUT IN TEXT MODE ENCODING DEFAULT)
    I saw this hint but I think there should be more to it (eg. transformation of the initial decoded xml file and the writing it to hard drive using the Open Dataset for Input...):
    ****************being of report *************************
    DATA: z       TYPE string,
          encode  TYPE string,
          decode  TYPE string .
    DATA: obj  TYPE REF TO cl_http_utility,
          cref TYPE REF TO if_http_utility.
    CREATE OBJECT : obj.
    cref = obj.
    z = 'what u have to encode'.
    encode = obj->if_http_utility~encode_base64( z ) .
    decode = obj->if_http_utility~decode_base64( encode ).
    ****************end of report ***************************
    What do i need more to the above report

  • After Effects FFX File Presets and Image thumbnails

    This is a sample piece of code from an effects preset for a text ffx for After effects. The "<xapGImg:image>/" from below is referring to a local url. but it seems to be encrypted or something. Is there a way to make image thumbnails for my ffx files so that the thumbnail can be viewed in bridge. Been looking for the answer but nothing.<br /><br />thanks for helping<br /><br /><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?><br /><x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.1-112"><br />   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><br />      <rdf:Description rdf:about=""<br />            xmlns:xap="http://ns.adobe.com/xap/1.0/"<br />            xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"><br />         <xap:CreatorTool>After Effects 7.0</xap:CreatorTool><br />         <xap:Thumbnails><br />            <rdf:Alt><br />               <rdf:li rdf:parseType="Resource"><br />                  <xapGImg:height>162</xapGImg:height><br />                  <xapGImg:width>216</xapGImg:width><br />                  <xapGImg:format>JPEG</xapGImg:format><br />                  <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7gAOQWRvYmUAZMAAAAAB/9sAhAAKBwcHCAcKCAgKDwoICg 8S&#xA;DQoKDRIUEBASEBAUFA8RERERDxQUFxgaGBcUHx8hIR8fLSwsLC0yMjIyMjIyMjIyAQsKCgsMCw4M&#xA;DA 4SDg4OEhQODg4OFBgRERIRERggFxQUFBQXIBweGhoaHhwiIiAgIiIrKykrKzIyMjIyMjIyMjL/&#xA;wAARCACiANg DASIAAhEBAxEB/8QBogAAAAcBAQEBAQAAAAAAAAAABAUDAgYBAAcICQoLAQACAgMB&#xA;AQEBAQAAAAAAAAABAAID BAUGBwgJCgsQAAIBAwMCBAIGBwMEAgYCcwECAxEEAAUhEjFBUQYTYSJx&#xA;gRQykaEHFbFCI8FS0eEzFmLwJHKC8 SVDNFOSorJjc8I1RCeTo7M2F1RkdMPS4ggmgwkKGBmElEVG&#xA;pLRW01UoGvLj88TU5PRldYWVpbXF1eX1ZnaGlq a2xtbm9jdHV2d3h5ent8fX5/c4SFhoeIiYqLjI&#xA;2Oj4KTlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+hEAAgI BAgMFBQQFBgQIAwNtAQACEQMEIRIx&#xA;QQVRE2EiBnGBkTKhsfAUwdHhI0IVUmJy8TMkNEOCFpJTJaJjssIHc9I1 4kSDF1STCAkKGBkmNkUa&#xA;J2R0VTfyo7PDKCnT4/OElKS0xNTk9GV1hZWltcXV5fVGVmZ2hpamtsbW5vZHV2d3h 5ent8fX5/c4&#xA;SFhoeIiYqLjI2Oj4OUlZaXmJmam5ydnp+So6SlpqeoqaqrrK2ur6/9oADAMBAAIRAxEAPwDjOb Nm&#xA;xV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2b&#xA;Nm xV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV&#xA;2bNmxV2bNmx V2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNm&#xA;xV2bNmxV2bNmxV2bNmxV 2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2b&#xA;NmxV2bNmxV2bNmxV2bNmxV2bNmxV2 bNmxVmX5Z+TbPzZrE9rfPIlrbwmVmhIVq8gqirK3jhr5t8s&#xA;flppelXb6Vq0tzq0JCR2xlRvi5cWqFjHT55JPy IsCmk6zqPIRtI628UrdFKKXav/AAa5FNb/ACyn&#xA;ttf0zTYNTivrjV5ZCxiWnpIhVndvib+bFXn+bPQGjWXk7Sv NUHkvT9GgvZo4Wl1LUblVkdSE5ADm&#xA;rddq0oBXI9a+TNI8yfmTrBa3S30DSConhgURo7gUCDhSgPEs1P44qxT8 rPKlj5m8wS22pIzWMFu0&#xA;rhTxJbkqIK/Scj3mW3sbXX9QttPUrZwTvFCpPI0Q8evzGd98n+YdBu7DXL7SdJg07 T9M5QpcxKqt&#xA;MkaFyzcVG3fqchHkvy7pVn5cu/PWv2R1OeV2axsCvMOzPxHwUIYsx7g0HbFXk2SDyN5eh8x+Zb TS&#xA;rguttLyadoyAwRVJ2JB70ydfmzpGkDy5pGuRaamj6ndECWzRVQ0K8irKoUVXxpXA35D2HreYb2+I&#xA;2t rfip95Gp/DFUtl8i6RJ+Zg8qWkkx0+MqLiRmUyf3YkejBabVA6YRefdD03QPM91pGmvJJb2qxh&#xA;mlIZubosjbq q9OWdB/LD/cz+ZGv64fiRWnaJvaWTig/4DFfINlpnmHzZ5t1vU7eG6s1kYIZ41lVA&#xA;zsVYBwRUJHirxfNnd9Os vJXmTyPrX6O0iO1hsHmiiuGVTMzRosqzeoBy35dK5xXRtKudY1S10y2F&#xA;ZrqRY1PYVO5PyxVBZs75pmneUNA8z ad5Ms9Ih1G/mjMuo39yquUCo0mwdW3anQUHTAGn6Jomo/nD&#xA;fWyafbfo3TrUmS29JPRMtFj3j48a1evTFXiWbP RPly18jarqmv6PZ6HB6Nm3Ge7dEYO78ldYxx/d&#xA;hKbccgn5eeTdDnXVfM2tL6uh6Y0n1eJt1k9Orcm/moKbdzi qG/KzyZo3mC31S+1pHa1slXjwbhQ0&#xA;LsfuGc8l4eq/AcU5HiOtBXYZ6B/xHZXH5YavrdlpkOkxzpLDFDCFHJSf RVzwRN/iOefMVdmzZsVd&#xA;mzZsVdmzZsVdmzZsVdmzZsVez2X+4T8jJJfsS6jzY+NZpfTU/wDAIMjH5KPbr52i9 YgOYJRDX+Yj&#xA;oPorkIk1PUZbVbOW6le0SnCBnYxinSik02xGGaaCVZoHaKVDVJEJVgR3BGKvovyz5Ym0nzr5g1 vU&#xA;Zo2ub0O9jCrcn+rcwzyMP2d+Kj6cJvyykOq6P5thgkUandXUxBJoQsicYifbkDnGDrutG4kujf3H&#xA;1m VeEk3qvzZR+yzVqRiNpqF/ZTGezuZbecggyROyMQeu6kYq9qbSZPJ35Q6vbzSo99NyiufSbkqv&#xA;O6QFOXiqtvh t5ZvtZuvyz08+UXt21S3URSRz7gcS3NfANuCK7ZwB9T1GS2a1e6la2ZubQl2KFieX&#xA;IrWla5djqup6cWawu5rU vsxhkaOo9+JGKsk/MUeck1SBPNlwJrto+cMcZHBFJpQKiqoPyya/kU8E&#xA;llrlkkojv5Qpir1C8WXlT2Y5yG5u7 q7lM11M88x6ySMWY/S2VBcT20olt5GilX7LoSrD6Rir3HRN&#xA;If8ALP

    The XMP packet looks OK--the thumbnail is base64 encoded as it should be.
    You'll have a better chance of a response if you post your question on the After Effects forum--readers there are more likely to be familiar with After Effects and Bridge.
    Don't post the XMP packet text--just that you can't see After Effects thumbnails in Bridge.

  • Base64 encode

    Hi,
    We have to provide a conversion of blobs to base64 in order to exchange data with
    a 3th party. I wrote the following function which is used to format an xml-message.
    Problem is the supplier reads this data with a .net decode of base64 complains it's invalid and it
    sees some lines with more than 76 characters which seems to be not correct.
    Any ideas what is wrong are greatly appreciated.
    9.2.0.4 HPUX11.11
    Tnx,
    Jeroen
    Function getbase64String( lv_blob blob )
    Return clob is
    Result clob;
    resultString VARCHAR2(4096);
    resultString1 clob;
    l_amt number default 2048;
    l_raw raw(4096);
    l_offset number default 1;
    l_clob clob;
    BEGIN
    dbms_output.put_line('length blob: ' || dbms_lob.getlength( lv_blob ) );
    begin
    DBMS_LOB.CREATETEMPORARY(resultString1,FALSE,DBMS_LOB.CALL);
    DBMS_LOB.CREATETEMPORARY(result,FALSE,DBMS_LOB.CALL);
    loop
    dbms_lob.read( lv_blob, l_amt, l_offset, l_raw );
    l_offset := l_offset + l_amt;
    -- dbms_output.put_line(' voor resultstring');
    resultString := utl_raw.cast_to_varchar2( utl_encode.base64_encode( l_raw ) );
    -- dbms_output.put_line(' na resultsstring');
    resultString1:=to_clob(resultString);
    dbms_lob.append(result,resultString1);
    end loop;
    exception
    when no_data_found then
    null;
    end;
    -- dbms_output.put_line('length:'||dbms_lob.getlength(result));
    RETURN ( result );
    END getbase64String;

    Yep, thats what I told you.
    I have modified your code slightly.
    This definitely produces your output.
    Note that you were not using an oracle_directory for p_dir.
    You should have said create or replace directory p_dir as 'your_location';
    Instead you had p_dir varchar2(200) := 'your location';
    The problem with the use of utl_file.put is you have to output a byte at a time. You were trying to output an entire clob, which is why it fell over.
    Note: I also removed your exception handler as this just masks where the error is.
    DECLARE
    p_file varchar2(100):= 'test_img.png';
    p_clob CLOB;
    l_bfile BFILE;
    l_step PLS_INTEGER := 19200;
    dest_file varchar2(100):='test_image.html';
    dest_handle UTL_FILE.file_type;
    v_start number := 1;
    BEGIN
    dbms_output.put_line('Encoding starts');
    l_bfile := BFILENAME('BFILE_DIR', p_file);
    dbms_output.put_line('File is going to open');
    DBMS_LOB.fileopen(l_bfile, DBMS_LOB.file_readonly);
    dest_handle := UTL_FILE.fopen('BFILE_DIR', dest_file, 'w', 32767);
    FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(l_bfile) - 1 )/l_step) LOOP
    dbms_output.put_line('Inside encodeing :'||i);
    p_clob := p_clob||UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(l_bfile, l_step, i * l_step + 1)));
    END LOOP;
    dbms_output.put_line('Base64 encoded');
    p_clob:= '<img src="data:image/png;base64,'||p_clob||'" width="32" height="32">';
    dbms_output.put_line('Assignment completed');
    for i in 1 .. dbms_lob.getlength(p_clob)
    loop
    UTL_FILE.put(dest_handle, dbms_lob.substr(p_clob,1,v_start));
    v_start := v_start+1;
    end loop;
    DBMS_LOB.fileclose(l_bfile);
    UTL_FILE.fclose(dest_handle);
    end;
    /

  • How to convert a base64 encoded string to binary?

    Hi, gurus,
    I want to convert a base64 encoded string (a image  which is read from a xml file)
    into a normal binary string and then upload to archive link.
    could you pls give me some hints on that?
    br.
    jun

    thank you for your quick reply!
    my real requirement is to extract an image(it 's said it's encoded using base64?) from a xml file and upload it sap archive linke,
    following is the xml content, does that mean i need to convert all the chars in the
    <mime_content> pair to your fm, that will be convert to binary string?
    <MIME_CONTENT xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" href="" xfa:contentType="image/jpg"
    >/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCE
    AAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIrIhscKDYoKy8xMzQzHyY4
    PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
    MTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEB
    AQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEU
    MoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2Rl
    ZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK
    0tPU1dbX2Nna4eLj5OXm5jp6vHy8/T19vf4foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYS
    QVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU
    VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5
    usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5jp6vLz9PX29/j5v/AABEIAFQAUwMBEQACEQEDEQH/
    2gAMAwEAAhEDEQA/APf6ACgAoAy/EWsxaLYGZgHmbiKP+8f8BXBjsbHB0ud79EduCwksVU5VourO
    Gg8X64kxdp0kUn7jRjaPy5/Wvk1neKjK90/Kx9LPK8I42St8zTv/ABjqS2tuYYYI3mjLFtpOPmI4
    59q662eV1CLikrq/4tfocdHKqDnJSbdniKuiMdQhv1GpyefbOcN8gBT3GBUYTO6sai9s7xf4G2
    JyqjKn+5VpL8T0NHV0V0YMrDII6EV9kmpK6PlGnF2YtMQUAFABQAUAcj4s8V3Gm3xsbGNN6qC8jj
    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</MIME_CONTENT
    >

Maybe you are looking for