Difference between revisions of "Vector and bitmap"
Revision as of 03:26, 20 June 2006
Vector and Bitmap
Inkscape is a vector editor, not bitmap (raster) editor. What does that mean?
The majority of images stored and processed on computers today are bitmaps. A bitmap, however, is a very low-level abstraction. It stores information about what is the color (and, possibly, transparency) of every pixel of the image - but nothing else.
For example, if you have a PNG image with a black circle on white background, in fact there is NO black circle stored in the image at all: it's only the person viewing this image who can "guess" that it displays a circle. All that the computer knows about the image is that some of its pixels are black and some are white.
As a result, there is little the computer itself can do with such an image. It can paint all white pixels blue, but it cannot move or transform the circle because it does not "see" it. These kinds of tasks may be difficult even for humans, as anyone who've used The Gimp or Photoshop would attest: you'll have to use complex and unreliable tools to "select" the circle, and you still cannot do this perfectly if, for example, the edges of the circle are anti-aliased (i.e. smoothed so that some pixels are half-black, half-white).
It's all different with vector graphics. In a vector format, the actual circle can be stored, along with its properties, as an object. This means you can easily separate it from other objects and do whatever you please with it. Moreover, computer can do a lot of things automatically! No more frustrating "selections", just pick any object and edit it as necessary. That's how Inkscape works, and that's its main point of difference from bitmap editors such as The_Gimp.
Here are the main advantages of the vector approach:
- Editable at any time. The depth of "undo" is a much less limiting factor in Inkscape than in a bitmap editor. Unless you delete some object, it's always as easy to separate from others and edit as always. In a bitmap editor, you are supposed to eventually "flatten" your image, so even if different objects were on different layers, they're no more. By contrast, there's no need to ever "flatten" a vector drawing (you can export it to a bitmap, though).
- Scalable. You can view or export your drawing at any resolution, and you'll never see any jaggedness or "zoom blur." Everything remains crisp regardless of size.
- Animatable. Since in a vector drawing, objects are stored separately, it's easy to animate them by moving, transforming, etc. That's why vector formats such as SVG or Flash usually support animation as well.
- Interactive. Not only can you animate objects, you can make them interactive as well. A drawing can change any properties of objects in response to user actions, which makes it possible to implement complex interfaces with buttons, links, drag-and-drop, etc.
- Easy to create. Since vector objects are similar to how we (humans) tend to think about drawings, and since many vector formats (including SVG) are text-based, it is easy to write a simple vector drawing manually (without graphic editor of any kind) or program a script to generate such a drawing, e.g. on a web server.
- Reusable. It's very easy to pick an object from a drawing and insert it into another drawing. It's like open source! :)
If you are into digital music, you may better understand it if I compare vector graphics to MIDI and bitmap graphics to a sound recording. Another analogy: vectors are like the source code of a program, while bitmaps are compiled binaries.
The only downside of vectors is that you are limited by the types of objects and properties that your drawing tool and vector format support. While you can store arbitrary graphics (e.g. photos) in bitmaps, you cannot easily simulate very complex graphics with vectors. Still, with Inkscape's gradients and transparency, you can create amazingly photorealistic vector images. Note also that, as a higher-level abstraction, vector may include bitmaps as a special kind of object. Thus, you can insert a photo into an Inkscape drawing and combine it with any vector objects.