Module: FreeImage::Information

Included in:
Bitmap
Defined in:
lib/free-image/modules/information.rb

Overview

Once a bitmap is loaded into memory, you can use the following methods to retrieve information about is type, dimensions, colors, etc.

Instance Method Summary collapse

Instance Method Details

#background_colorObject

Returns the background color of a bitmap. For 8-bit images, the color index in the palette is returned in the rgbReserved member of the bkcolor parameter.



86
87
88
89
90
91
# File 'lib/free-image/modules/information.rb', line 86

def background_color
  ptr = FFI::MemoryPointer.new(:pointer)
  FreeImage.FreeImage_GetBackgroundColor(self, ptr)
  FreeImage.check_last_error
  RGBQuad.new(ptr)
end

#background_color=(value) ⇒ Object

Set the background color of a bitmap. The color should be an instance of RGBQuad.

When saving an image to PNG, this background color is transparently saved to the PNG file. When the bkcolor parameter is nil, the background color is removed from the image.



99
100
101
102
103
104
105
# File 'lib/free-image/modules/information.rb', line 99

def background_color=(value)
  result = FreeImage.FreeImage_GetBackgroundColor(self, value)
  FreeImage.check_last_error
  if !result
    raise(RuntimeError, "Could not save background color")
  end
end

#bits_per_pixelObject Also known as: bpp

Returns the size of one pixel in the bitmap in bits. For example if each pixel takes 32-bits of space in the bitmap, this function returns 32. Possible bit depths are 1, 4, 8, 16, 24, 32 for standard bitmaps and 16-, 32-, 48-, 64-, 96- and 128-bit for non standard bitmaps



111
112
113
114
115
# File 'lib/free-image/modules/information.rb', line 111

def bits_per_pixel
  result = FreeImage.FreeImage_GetBPP(self)
  FreeImage.check_last_error
  result
end

#blue_maskObject

Returns a bit pattern describing the blue color component of a pixel in a bitmap.



119
120
121
122
123
# File 'lib/free-image/modules/information.rb', line 119

def blue_mask
  result = FreeImage.FreeImage_GetBlueMask(self)
  FreeImage.check_last_error
  result
end

#color_typeObject



125
126
127
128
129
# File 'lib/free-image/modules/information.rb', line 125

def color_type
  result = FreeImage.FreeImage_GetColorType(self)
  FreeImage.check_last_error
  result
end

#dib_sizeObject

Returns the size of the DIB-element of a bitmap in memory, which is the header size + palette size + data bits. Note that this is not the real size of a bitmap, just the size of its DIB-element.



134
135
136
137
138
# File 'lib/free-image/modules/information.rb', line 134

def dib_size
  result = FreeImage.FreeImage_GetDIBSize(self)
  FreeImage.check_last_error
  result
end

#dots_per_meter_xObject

Returns the horizontal resolution, in pixels-per-meter, of the target device for the bitmap.



142
143
144
145
146
# File 'lib/free-image/modules/information.rb', line 142

def dots_per_meter_x
  result = FreeImage.FreeImage_GetDotsPerMeterX(self)
  FreeImage.check_last_error
  result
end

#dots_per_meter_x=(value) ⇒ Object

Sets the horizontal resolution, in pixels-per-meter, of the target device for the bitmap.



150
151
152
153
154
# File 'lib/free-image/modules/information.rb', line 150

def dots_per_meter_x=(value)
  result = FreeImage.FreeImage_SetDotsPerMeterX(self, value)
  FreeImage.check_last_error
  result
end

#dots_per_meter_yObject

Returns the vertical resolution, in pixels-per-meter, of the target device for the bitmap.



158
159
160
161
162
# File 'lib/free-image/modules/information.rb', line 158

def dots_per_meter_y
  result = FreeImage.FreeImage_GetDotsPerMeterY(self)
  FreeImage.check_last_error
  result
end

#dots_per_meter_y=(value) ⇒ Object

Sets the vertical resolution, in pixels-per-meter, of the target device for the bitmap.



166
167
168
169
170
# File 'lib/free-image/modules/information.rb', line 166

def dots_per_meter_y=(value)
  result = FreeImage.FreeImage_SetDotsPerMeterY(self, value)
  FreeImage.check_last_error
  result
end

#green_maskObject

Returns a bit pattern describing the green color component of a pixel in a bitmap.



173
174
175
176
177
# File 'lib/free-image/modules/information.rb', line 173

def green_mask
  result = FreeImage.FreeImage_GetGreenMask(self)
  FreeImage.check_last_error
  result
end

#has_background_colorObject

Returns true when the image has a file background color, false otherwise



180
181
182
183
184
# File 'lib/free-image/modules/information.rb', line 180

def has_background_color
  result = FreeImage.FreeImage_HasBackgroundColor(self)
  FreeImage.check_last_error
  result
end

#has_pixelsObject

Returns true if the bitmap contains pixel data, otherwise false. Bitmaps can be loaded using the FIF_LOAD_NOPIXELS load flag whic tells the decoder to read header data and available metadata and skip pixel data decoding. This reduces memory usage and load speed.



190
191
192
193
194
# File 'lib/free-image/modules/information.rb', line 190

def has_pixels
  result = FreeImage.FreeImage_HasPixels(self)
  FreeImage.check_last_error
  result
end

#has_rgb_masksObject



196
197
198
199
200
# File 'lib/free-image/modules/information.rb', line 196

def has_rgb_masks
  result = FreeImage.FreeImage_HasRGBMasks(self)
  FreeImage.check_last_error
  result
end

#heightObject

Returns the height of the bitmap in pixel units



203
204
205
206
207
# File 'lib/free-image/modules/information.rb', line 203

def height
  result = FreeImage.FreeImage_GetHeight(self)
  FreeImage.check_last_error
  result
end

#image_typeObject

Returns the image type of a bitmap.



210
211
212
213
214
# File 'lib/free-image/modules/information.rb', line 210

def image_type
  result = FreeImage.FreeImage_GetImageType(self)
  FreeImage.check_last_error
  result
end

#info_headerObject



216
217
218
219
220
# File 'lib/free-image/modules/information.rb', line 216

def info_header
  result = FreeImage::InfoHeader.new(FreeImage.FreeImage_GetInfoHeader(self))
  FreeImage.check_last_error
  result
end

#lineObject

Returns the width of the bitmap in bytes. See also FreeImage::Information.pitch. There has been some criticism on the name of this function. Some people expect it to return a scanline in the pixel data, while it actually returns the width of the bitmap in bytes. As far as I know the term Line is common terminology for the width of a bitmap in bytes. It is at least used by Microsoft DirectX.



227
228
229
230
231
# File 'lib/free-image/modules/information.rb', line 227

def line
  result = FreeImage.FreeImage_GetLine(self)
  FreeImage.check_last_error
  result
end

#paletteObject

Returns a bitmap’s palette. If the bitmap doesn’t have a palette (i.e. when the pixel bit depth is greater than 8), this return nil.



235
236
237
# File 'lib/free-image/modules/information.rb', line 235

def palette
  @palette ||= Palette.new(self)
end

#pitchObject

Returns the width of the bitmap in bytes, rounded to the next 32-bit boundary, also known as pitch or stride or scan width. In FreeImage each scanline starts at a 32-bit boundary for performance reasons. This accessor is essential when using low level pixel manipulation functions.



244
245
246
247
248
# File 'lib/free-image/modules/information.rb', line 244

def pitch
  result = FreeImage.FreeImage_GetPitch(self)
  FreeImage.check_last_error
  result
end

#red_maskObject

Returns a bit pattern describing the red color component of a pixel in a bitmap.



251
252
253
254
255
# File 'lib/free-image/modules/information.rb', line 251

def red_mask
  result = FreeImage.FreeImage_GetRedMask(self)
  FreeImage.check_last_error
  result
end

#transparency_countObject

Returns the number of transparent colors in a palletized bitmap, otherwise returns 0.



259
260
261
262
263
# File 'lib/free-image/modules/information.rb', line 259

def transparency_count
  result = FreeImage.FreeImage_GetTransparencyCount(self)
  FreeImage.check_last_error
  result
end

#transparentObject

Returns true if the transparency table is enabled (1-, 4- or 8-bit images) or when the input dib contains alpha values (32-bit images, RGBA16 or RGBAF images). Returns false otherwise.



268
269
270
271
272
# File 'lib/free-image/modules/information.rb', line 268

def transparent
  result = FreeImage.FreeImage_IsTransparent(self)
  FreeImage.check_last_error
  result
end

#transparent=(value) ⇒ Object

Tells FreeImage if it should make use of the transparency table or the alpha channel that may accompany a bitmap. When calling this function with a bitmap whose bitdepth is different from 1-, 4-, 8- or 32-bit, transparency is disabled whatever the value of the Boolean parameter.



278
279
280
281
282
# File 'lib/free-image/modules/information.rb', line 278

def transparent=(value)
  result = FreeImage.FreeImage_SetTransparent(self, value)
  FreeImage.check_last_error
  result
end

#transparent_indexObject

Returns the palette entry used as transparent color for the image specified. Works for palletised images only and returns -1 for high color images or if the image has no color set to be transparent. Although it is possible for palletised images to have more than one transparent color, this function always returns the index of the first palette entry, set to be transparent.



290
291
292
293
294
# File 'lib/free-image/modules/information.rb', line 290

def transparent_index
  result = FreeImage.FreeImage_GetTransparentIndex(self)
  FreeImage.check_last_error
  result
end

#transparent_index=(value) ⇒ Object

Sets the index of the palette entry to be used as transparent color for the image specified. This works on palletised images only and does nothing for high color images.

Although it is possible for palletised images to have more than one transparent color, this method sets the palette entry specified as the single transparent color for the image. All other colors will be set to be non-transparent by this method.

As with FreeImage::Bitmap.transparency_table=, this method also sets the image’s transparency property to true for palletised images.



306
307
308
309
310
# File 'lib/free-image/modules/information.rb', line 306

def transparent_index=(value)
  result = FreeImage.FreeImage_SetTransparentIndex(self, value)
  FreeImage.check_last_error
  result
end

#widthObject

Returns the width of the bitmap in pixel units



317
318
319
320
321
# File 'lib/free-image/modules/information.rb', line 317

def width
  result = FreeImage.FreeImage_GetWidth(self)
  FreeImage.check_last_error
  result
end