Skip to main content

While doing a Drupal 6 to 7 upgrade for a web project, I was wondering if there was a way to upgrade my imagecache presets to Drupal 7 image styles. Image styles in Drupal 7 are the equivalent of Imagecache presets in Drupal 6. I found out that you can do it via Features or finding another solution (the one posted by Drupal user Vladimir). Here's how I migrated my Drupal 6 imagecache presets to D7 image styles. Create file in "Drupal_ROOT" and paste the following code: 

<?php
define('DRUPAL_ROOT', getcwd());

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

/////////////////////////////////////////////////
function imagecache_preset_actions($preset, $reset = FALSE) {
  $actions_cache = array();

    $result = db_query('SELECT * FROM {imagecache_action} where presetid = '.$preset['presetid'].' order by weight' );
    foreach ($result as $row ) {
    $row=(array)$row;
      $row['data'] = unserialize($row['data']);
      $actions_cache[$preset['presetid']][] = $row;
    }

  return isset($actions_cache[$preset['presetid']]) ? $actions_cache[$preset['presetid']] : array();
}
/////////////////////////////////////////////////

/////////////////////////////////////////////////
function imagecache_presets() {
  $presets = array();

    $normal_presets = array();

    $result = db_query('SELECT * FROM {imagecache_preset} ORDER BY presetname');
   
    foreach ($result as $preset) {
      $preset=(array)$preset;
      $presets[$preset['presetid']] = $preset;
      $presets[$preset['presetid']]['actions'] = imagecache_preset_actions($preset);
      $presets[$preset['presetid']]['storage'] = 0;

      // Collect normal preset names so we can skip defaults and mark overrides accordingly
      $normal_presets[$preset['presetname']] = $preset['presetid'];
    }

  return $presets;
}
/////////////////////////////////////////////////

/////////////////////////////////////////////////
$styles_cnt=0;
$effects_new_cnt=0;
$effects_ext_cnt=0;

$presets=imagecache_presets();
foreach($presets as $preset)
    {
    $styles_cnt++;// inc styles
   
    $style=image_style_load($preset['presetname']);
   
    $style['name']=$preset['presetname'];
    $style=image_style_save($style);
    if(!isset($style['effects']))
        {
        $style['effects']=array();
        }
    foreach($preset['actions'] as $action)
        {
        $action['action']=str_replace('imagecache','image',$action['action']);
        $action['module']=str_replace('imagecache','image',$action['module']);
       
        $effect_ieid=FALSE;// effect not exists
        foreach($style['effects'] as $effect)
            {
            if($effect['name'] == $action['action'] &&
                $effect['module'] == $action['module'] &&
                $effect['weight'] == $action['weight'] &&
                $effect['data'] == $action['data'] )
                {
                $effect_ieid=$effect['ieid'];// effect exists
                }
            }
        $effect=array();   
        if($effect_ieid)
            {
            $effects_ext_cnt++;// inc exists
            $effect=image_effect_load($effect_ieid,$style['name']);
            }
        else
            {
            $effects_new_cnt++;// inc new
            $effect=image_effect_definition_load($action['action']);
            }
       
        $effect['isid'] = $style['isid'];   
           
        $effect['name'] = $action['action'];
        $effect['module'] == $action['module'];
        $effect['weight'] = $action['weight'];
        $effect['data'] = $action['data'];
        $effect = image_effect_save($effect);
        $style['effects'][$effect['ieid']] = $effect;
        }
    $style=image_style_save($style);
    }

print "Styles: $styles_cnt,    Effects new: $effects_new_cnt, Effects exists: $effects_ext_cnt \n";
?>

Open the file and you're done! Happy Drupalling! :)

Comments

Siby (not verified) Thu, 07/03/2014 - 12:12

In reply to by Samira

Hello would you mind letting me know which hosting company you're working with? I've loaded your blog in 3 completely different browsers and I must say this blog loads a lot faster then most. Can you recommend a good hosting provider at a honest price? Cheers, I appreciate it!

Haris (not verified) Mon, 06/09/2014 - 00:46

Wonderful blog! I found it while surfing around on Yahoo News.
Do you have any suggestions on how to get listed in Yahoo News?
I've been trying for a while but I never seem to get there!
Thanks

Sienn (not verified) Mon, 06/09/2014 - 08:53

I think that what you posted made a ton of sense. But, what about this?
what if you added a little content? I ain't saying your content is not solid., but suppose you added a title to maybe grab people's
attention? I mean Upgrading imagecache presets to Drupal 7 image styles | Samira Elhaddad is kinda vanilla.
You should look at Yahoo's front page and see how they create article headlines to
get viewers interested. You might add a video or a picture or two to grab people excited about what you've written.
Just my opinion, it could bring your website a little livelier.

Add new comment

The content of this field is kept private and will not be shown publicly.

Filtered HTML

  • Web page addresses and email addresses turn into links automatically.
  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.