您的位置:首页 > 运维架构

如何实现ecshop中把相册里每一张图片自动缩略成 商品图片大小

2014-01-16 11:16 471 查看
(一)现在的ecshop 在添加新商品的时候 把上传的商品图片 剪裁成 小图片 (在前台单个商品页面的 商品图片下面的 相册图片列表图

片 , $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height'] 这个是大小) 跟 商品图片(就是单个商品页面的 商品图片 , $GLOBALS['_CFG']['image_width'], $GLOBALS['_CFG']

['image_height'] 这个是大小)

然而 ecshop 现在 只是 处理 添加商品是 上传的那张 图片 (但是 相册里面的 图片 只是处理成 小图片 )

我想做一个 在相册里上传图片的时候 并处理 缩小成 小图片的时候 顺便 生成一个 商品图片 并存放在 goods_img 文件夹下

以下 是 在上传 相册图片的时候 并生成 缩略图

这个方法 是 ...\upload\admin\includes\lib_goods.php 里的方法

**

* 保存某商品的相册图片

* @param int $goods_id

* @param array $image_files

* @param array $image_descs

* @return void

*/

function handle_gallery_image($goods_id, $image_files, $image_descs)

{

/* 是否处理缩略图 */

$proc_thumb = (isset($GLOBALS['shop_id']) && $GLOBALS['shop_id'] > 0)? false : true;

foreach ($image_descs AS $key => $img_desc)

{

/* 是否成功上传 */

$flag = false;

if (isset($image_files['error']))

{

if ($image_files['error'][$key] == 0)

{

$flag = true;

}

}

else

{

if ($image_files['tmp_name'][$key] != 'none')

{

$flag = true;

}

}

if ($flag)

{

// 生成缩略图

if ($proc_thumb)

{

$thumb_url = $GLOBALS['image']->make_thumb($image_files['tmp_name'][$key], $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);

$thumb_url = is_string($thumb_url) ? $thumb_url : '';

}

$upload = array(

'name' => $image_files['name'][$key],

'type' => $image_files['type'][$key],

'tmp_name' => $image_files['tmp_name'][$key],

'size' => $image_files['size'][$key],

);

if (isset($image_files['error']))

{

$upload['error'] = $image_files['error'][$key];

}

$img_original = $GLOBALS['image']->upload_image($upload);

if ($img_original === false)

{

sys_msg($GLOBALS['image']->error_msg(), 1, array(), false);

}

$img_url = $img_original;

if (!$proc_thumb)

{

$thumb_url = $img_original;

}

// 如果服务器支持GD 则添加水印

if ($proc_thumb && gd_version() > 0)

{

$pos = strpos(basename($img_original), '.');

$newname = dirname($img_original) . '/' . $GLOBALS['image']->random_filename() . substr(basename($img_original), $pos);

copy('../' . $img_original, '../' . $newname);

$img_url = $newname;

$GLOBALS['image']->add_watermark('../'.$img_url,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']);

}

//********************************************************

// 生成商品图片的缩略图 开始

//********************************************************

if ($GLOBALS['_CFG']['image_width'] != 0 || $GLOBALS['_CFG']['image_height'] != 0)

{

$goods_thumb_url = $GLOBALS['image']->make_thumb($image_files['tmp_name'][$key], $GLOBALS['_CFG']['image_width'], $GLOBALS['_CFG']['image_height']);

$goods_thumb_url = is_string($goods_thumb_url) ? $goods_thumb_url : '';

$upload = array(

'name' => $image_files['name'][$key],

'type' => $image_files['type'][$key],

'tmp_name' => $image_files['tmp_name'][$key],

'size' => $image_files['size'][$key],

);

if (isset($image_files['error']))

{

$upload['error'] = $image_files['error'][$key];

}

$goods_img_original = $GLOBALS['image']->upload_image($upload);

}

if ($goods_img_original === false)

{

sys_msg($GLOBALS['image']->error_msg(), 1, array(), false);

}

$goods_img_url = $goods_img_original;

if (!$proc_thumb)

{

$goods_thumb_url = $goods_img_original;

}

// 如果服务器支持GD 则添加水印

if ($proc_thumb && gd_version() > 0)

{

$pos = strpos(basename($goods_img_original), '.');

$newname = dirname($goods_img_original) . '/' . $GLOBALS['image']->random_filename() . substr(basename($goods_img_original), $pos);

copy('../' . $goods_img_original, '../' . $newname);

$goods_img_url = $newname;

$GLOBALS['image']->add_watermark('../'.$goods_img_url,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']);

}

//********************************************************

// 生成商品图片的缩略图 结束

//********************************************************

/* 重新格式化图片名称 */

$img_original = reformat_image_name('gallery', $goods_id, $img_original, 'source');

//********************************************************

$goods_thumb_url = reformat_image_name('gallery_thumb', $goods_id, $goods_thumb_url, 'goods');

//********************************************************

$img_url = reformat_image_name('gallery', $goods_id, $img_url, 'goods');

$thumb_url = reformat_image_name('gallery_thumb', $goods_id, $thumb_url, 'thumb');

$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_gallery') . " (goods_id, img_url, img_desc, thumb_url, img_original,goods_img) " .

"VALUES ('$goods_id', '$img_url', '$img_desc', '$thumb_url', '$img_original','$goods_thumb_url')";

$GLOBALS['db']->query($sql);

/* 不保留商品原图的时候删除原图 */

if ($proc_thumb && !$GLOBALS['_CFG']['retain_original_img'] && !empty($img_original))

{

$GLOBALS['db']->query("UPDATE " . $GLOBALS['ecs']->table('goods_gallery') . " SET img_original='' WHERE `goods_id`='{$goods_id}'");

@unlink('../' . $img_original);

}

}

}

}

goods_img 这个字段是我在 数据表 ecs_goods_gallery 表中添加的字段 用来存放 相册图片的商品缩略图的路径

* 保存某商品的相册图片

* @param int $goods_id

* @param array $image_files

* @param array $image_descs

* @return void

*/

function handle_gallery_image($goods_id, $image_files, $image_descs)

{

/* 是否处理缩略图 */

$proc_thumb = (isset($GLOBALS['shop_id']) && $GLOBALS['shop_id'] > 0)? false : true;

foreach ($image_descs AS $key => $img_desc)

{

/* 是否成功上传 */

$flag = false;

if (isset($image_files['error']))

{

if ($image_files['error'][$key] == 0)

{

$flag = true;

}

}

else

{

if ($image_files['tmp_name'][$key] != 'none')

{

$flag = true;

}

}

if ($flag)

{

// 生成缩略图

if ($proc_thumb)

{

$thumb_url = $GLOBALS['image']->make_thumb($image_files['tmp_name'][$key], $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);

$thumb_url = is_string($thumb_url) ? $thumb_url : '';

}

$upload = array(

'name' => $image_files['name'][$key],

'type' => $image_files['type'][$key],

'tmp_name' => $image_files['tmp_name'][$key],

'size' => $image_files['size'][$key],

);

if (isset($image_files['error']))

{

$upload['error'] = $image_files['error'][$key];

}

$img_original = $GLOBALS['image']->upload_image($upload);

if ($img_original === false)

{

sys_msg($GLOBALS['image']->error_msg(), 1, array(), false);

}

$img_url = $img_original;

if (!$proc_thumb)

{

$thumb_url = $img_original;

}

// 如果服务器支持GD 则添加水印

if ($proc_thumb && gd_version() > 0)

{

$pos = strpos(basename($img_original), '.');

$newname = dirname($img_original) . '/' . $GLOBALS['image']->random_filename() . substr(basename($img_original), $pos);

copy('../' . $img_original, '../' . $newname);

$img_url = $newname;

echo "<script language=\"JavaScript\">alert(\"img_url ---".$img_url ."\");</script>";

$GLOBALS['image']->add_watermark('../'.$img_url,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']);

}

//********************************************************

// 生成商品图片的缩略图 开始

//********************************************************

if ($GLOBALS['_CFG']['image_width'] != 0 || $GLOBALS['_CFG']['image_height'] != 0)

{

$goods_thumb_url = $GLOBALS['image']->make_thumb('../'. $img_url , $GLOBALS['_CFG']['image_width'], $GLOBALS['_CFG']['image_height']);

if ($goods_thumb_url === false)

{

sys_msg($image->error_msg(), 1, array(), false);

}

// 加水印

if (intval($GLOBALS['_CFG']['watermark_place']) > 0 && !empty($GLOBALS['_CFG']['watermark']))

{

if ($image->add_watermark('../'.$goods_thumb_url,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']) === false)

{

sys_msg($image->error_msg(), 1, array(), false);

}

}

}

//********************************************************

// 生成商品图片的缩略图 结束

//********************************************************

/* 重新格式化图片名称 */

$img_original = reformat_image_name('gallery', $goods_id, $img_original, 'source');

//********************************************************

$goods_thumb_url = reformat_image_name('gallery_thumb', $goods_id, $goods_thumb_url, 'goods');

//********************************************************

$img_url = reformat_image_name('gallery', $goods_id, $img_url, 'goods');

$thumb_url = reformat_image_name('gallery_thumb', $goods_id, $thumb_url, 'thumb');

$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_gallery') . " (goods_id, img_url, img_desc, thumb_url, img_original,goods_img) " .

"VALUES ('$goods_id', '$img_url', '$img_desc', '$thumb_url', '$img_original','$goods_thumb_url')";

$GLOBALS['db']->query($sql);

/* 不保留商品原图的时候删除原图 */

if ($proc_thumb && !$GLOBALS['_CFG']['retain_original_img'] && !empty($img_original))

{

$GLOBALS['db']->query("UPDATE " . $GLOBALS['ecs']->table('goods_gallery') . " SET img_original='' WHERE `goods_id`='{$goods_id}'");

@unlink('../' . $img_original);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐