How to find the file format from binary data [closed] - oracle9i

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
We have a Oracle 9i database and OrderDetails table which has a column to store binary data for product images.
These images can be viewed only using a 3rd party tool. I have no idea which 3rd party tool. and I have no idea of the format of the image.
Is there anyway from the binary data we can find what format is the image?
Thanks

file or libmagic is a good place to start.

From your description it isn't clear whether the third-party tool is needed to access the data or to display it. It is entirely probable the data is simply JPG, BMP or PNG and the tool is basically an SQL frontend. To verify this try to write out the binary data to a file (being careful to tell your program it's binary data) and then try to open it with a standard image tool. A decent image editor will ignore the extension and sniff the data to get the format.
If you verify it really is a standard binary image you have two options:
Batch convert to JPEG, saving
yourself the effort of learning the
format.
Find a tool that tells you the
format (there are many including
Imagemagick identify and even
online tools)

Yeah, read about headers of JPG, PNG, GIF and other popular image formats and try to recognize their headers in your data.

Related

base64 Encoded String is way too long iOS [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I am encrypting images using AESCrypt and converting them to NSString, so people can easily share them.. The problem is that text is too long. An Encrypted 19Kb image took minutes to copy. Is there a way I can fix this problem? Is it possible to shorten strings without losing data?
Default-569h#2x.png files base64 string with an encryption key
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
Generally speaking, no you cannot shorten the encrypted strings without losing data. All (lossless) compression algorithms work by eliminating redundancy/patterns. A good encryption algorithm has virtually no redundancy/patterns, so lossless compression is usually not possible. In some cases I've even seen it increase the file size by adding the compression metadata to the file
Your best bet is to apply as much compression (lossy or lossless) to the image before encrypting/converting to Base-64. I would bet that the reason the encryption/decryption takes so long is the limited resources of the mobile device. Extensive floating point operations are hard on mobile devices, and thus they are poor platforms for encryption.
NOTE: Since the NSString class is immutable, you may want to look into the AESCrypt code to see if it is constantly appending and/or copying the string as it goes. This would be a very inefficient way to handle it.

How do I display a WebP image in a TImage or just TBitmap? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Delphi-WebP is a project providing Delphi bindings for Google's libWebP.dll, which loads WebP images, but the project provides no Delphi-specific image code.
How can I load a WebP image into a TImage or TBitmap?
You should develop and register TGraphic sub-class, that can load/save WebP format images, just like TPNGImage, TJPEGImage and TGIFImage classes work.
You can get examples of such classes in recent versions of VCL (JPEG and PNG), on Torry.net or with libraries like:
http://melander.dk/delphi/gifimage/
http://www.soft-gems.net/index.php/libs/graphicex-library
http://galfar.vevb.net/imaging/doc/html/faq.html
Just learn how that was implemented in there projects and do the same for your project of WebP support.
PS. You can also derive your class from TBitmap rather than TGraphic - that would be less effective but simplier to do. For example of this approach see http://galfar.vevb.net/wp/projects/jpeg2000-for-pascal/
However that would loose all the WebP-specific information and would be "quick and dirty" hack rather than proper VCL-targeted implementation.

Computer Vision Libraries [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm starting a Computer Vision project, and need to build an interface between a "Vision Agent" I want to develop and Images and Videos it should use as input.
I'm working in C++ and this interface should expose some methods for low level Input/Output operations:
load Image (in memory)
load a pool of Images (saved in a Directory)
access a single pixel in a loaded Image
load a Video as a pool of Images (would like to decide time interval between each frame)
load a single frame of a Video as an Image
I'm a newbie to Computer Vision, and need to find an efficient library that will help me implement this interface.
By browsing on the web I found some of the most used libraries for this kind of projects, such as:
OpenCV
VXL
IVT
What I'd like to know is:
Has anyone of you has worked with one of these?
Do you think they are appropriate for my task?
If yes, which one is better in your opinion (more usable and efficient).
Do you have any other suggestions?
ADDED QUESTION:
Do you know what kind of license these libraries (or other suggested ones) are produced under?
I worked with OpenCV. I don't know (or remember) the other but OpenCV is quite a first choice.
It supports all of the features you mentioned. These are rather base needs.
Keep in mind that OpenCV is rather low-level library. You will work on image matrices and some common math or statistics functions as well. It may be hard at the beginning.
I would suggest reading (or just browsing) O'Reilly's 'Learning OpenCV' especially to make use of more advanced features.
EDIT: OpenCV will be efficent for sure. Its image frame-by-frame processing would be a benefit for your needs. It is released over BSD licence.
I would also suggest OpenCV for your task at hand.
You may also check this older question for other possibilities and opinions.

Asp .Net Word Automation [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
We have a situation where we have to
Open up a Word document(template)
Get data from DB and merge it to that document
Give the users ability to add or modify sections in that merged document
finally save the document (which needs to go back to the DB)
I know that atleast the first two is possible. But is it possible for 3 to happen through a web site?
Any ideas or information or third party tools to accomplish this is much appreciated.
Thanks,
Raja
THe Aspose component is pretty good for being able to manipulate docs through an API:
http://www.aspose.com/categories/.net-components/aspose.words-for-.net/default.aspx
Alternatively if you are using the docx file formats you can read up on the Office OpenXML format and make the changes directly to the file.
In general, you should avoid automating Office from server-side apps.
A better approach is to use OOXML.
You can use the packaging APIs to produce a word file, or... you can produce the "template" .docx file in Word 2007/2010, then in the ASPNET app, open the .docx with a zip library like DotNetZip, modify the portion you need to modify (it's an XML doc) then re-zip and you have a valid .docx file.

Image library recommendations [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm looking for some image library that can work with multiple formats (jpg,gif,png), and is fast at displaying the images to the screen.
Also, it would be nice if I could specify only part of the image to render to the screen.
In the end I want to have lots of images on the screen that I can pan and zoom about.
This is for a personal project on my ppc powerbook, and I'd prefer if the library be in c++.
FreeImage.
That's for loading.
For displaying, you can either use the FreeImage methods to make a bitmap that you can then display in some control (depending on your UI).
For the real hotness in display, you'll then want to use OpenGL.
Also, in the meantime, I've discovered CImg, which isn't a library so much as a framework for doing lots of common imaging applications and works in C++.
There are also:
Framewave based on AMD Performance Library which provides signal and image processing features
GraphicsMagick multi-threaded derivative from ImageMagick
Check related questions
Fast Cross-Platform C/C++ Image Processing Libraries
Image processing libraries
ImageMagick has libraries in several languages to do what you want.
Imagemagick seems to be the gold standard and is used in all sorts of places. What sort of environment are you working in -- Linux? Windows?

Resources