function theme_retina_images_style_preview in Retina Images 7
Returns HTML for a preview of an image style.
Parameters
$variables: An associative array containing:
- style: The image style array being previewed.
1 theme call to theme_retina_images_style_preview()
- retina_images_form_image_style_form_alter in ./
retina_images.module - Implements hook_form_FORM_ID_alter().
File
- ./
retina_images.module, line 360 - This module provides an image effect to assist in outputing high resolution images.
Code
function theme_retina_images_style_preview($variables) {
$style = $variables['style'];
$sample_image = variable_get('image_style_preview_image', drupal_get_path('module', 'image') . '/sample.png');
$sample_width = 160;
$sample_height = 160;
// Set up original file information.
$original_path = $sample_image;
$original_image = image_get_info($original_path);
if ($original_image['width'] > $original_image['height']) {
$original_width = min($original_image['width'], $sample_width);
$original_height = round($original_width / $original_image['width'] * $original_image['height']);
}
else {
$original_height = min($original_image['height'], $sample_height);
$original_width = round($original_height / $original_image['height'] * $original_image['width']);
}
$original_attributes = array_intersect_key($original_image, array(
'width' => '',
'height' => '',
));
$original_attributes['style'] = 'width: ' . $original_width . 'px; height: ' . $original_height . 'px;';
// Set up preview file information.
$preview_file = image_style_path($style['name'], $original_path);
if (!file_exists($preview_file)) {
image_style_create_derivative($style, $original_path, $preview_file);
}
$preview_image = image_get_info($preview_file);
if ($preview_image['width'] > $preview_image['height']) {
$preview_width = min($preview_image['width'], $sample_width);
$preview_height = round($preview_width / $preview_image['width'] * $preview_image['height']);
}
else {
$preview_height = min($preview_image['height'], $sample_height);
$preview_width = round($preview_height / $preview_image['height'] * $preview_image['width']);
}
$preview_attributes = array_intersect_key($preview_image, array(
'width' => '',
'height' => '',
));
$preview_attributes['style'] = 'width: ' . $preview_width . 'px; height: ' . $preview_height . 'px;';
// Calculate the final output size as theme_image_style would use since the
// image may be retinafied.
$final_output_size = array(
'width' => $preview_image['width'],
'height' => $preview_image['height'],
);
image_style_transform_dimensions($style['name'], $final_output_size);
// Build our URL for our retinafied preview
$url = 'admin/config/media/image-styles/retina_preview/' . $style['name'];
// In the previews, timestamps are added to prevent caching of images.
$output = '<div class="image-style-preview preview clearfix">';
// Build the preview of the original image.
$original_url = file_create_url($original_path);
$output .= '<div class="preview-image-wrapper">';
$output .= t('original') . ' (' . l(t('view actual size'), $original_url) . ')';
$output .= '<div class="preview-image original-image" style="' . $original_attributes['style'] . '">';
$output .= '<a href="' . $original_url . '">' . theme('image', array(
'path' => $original_path,
'alt' => t('Sample original image'),
'title' => '',
'attributes' => $original_attributes,
)) . '</a>';
$output .= '<div class="height" style="height: ' . $original_height . 'px"><span>' . $original_image['height'] . 'px</span></div>';
$output .= '<div class="width" style="width: ' . $original_width . 'px"><span>' . $original_image['width'] . 'px</span></div>';
$output .= '</div>';
// End preview-image.
$output .= '</div>';
// End preview-image-wrapper.
// Build the preview of the image style.
$preview_url = file_create_url($preview_file) . '?cache_bypass=' . REQUEST_TIME;
$output .= '<div class="preview-image-wrapper">';
$output .= check_plain($style['name']) . ' (' . l(t('view actual size'), $url) . ')';
$output .= '<div class="preview-image modified-image" style="' . $preview_attributes['style'] . '">';
$output .= '<a href="' . url($url) . '?' . time() . '">' . theme('image', array(
'path' => $preview_url,
'alt' => t('Sample modified image'),
'title' => '',
'attributes' => $preview_attributes,
)) . '</a>';
$output .= '<div class="height" style="height: ' . $preview_height . 'px"><span>' . $final_output_size['height'] . 'px</span></div>';
$output .= '<div class="width" style="width: ' . $preview_width . 'px"><span>' . $final_output_size['width'] . 'px</span></div>';
$output .= '</div>';
// End preview-image.
$output .= '</div>';
// End preview-image-wrapper.
$output .= '</div>';
// End image-style-preview.
return $output;
}