function make_new_avatar($array = null) { global $cbphoto, $userquery, $photo, $db, $cbcollection; if (is_null($array)) { $array = $_POST; } /* include resizer class */ include_once 'includes/classes/resizer.class.php'; $date_dir = get_photo_date_folder($photo); /* get original photo */ $p = get_original_photo($photo); /* define source and decode photo details */ $source = PHOTOS_DIR . '/' . $date_dir . '/' . $p; $pd = json_decode($photo['photo_details'], true); /* coordinates */ $x = mysql_clean($array['start_x']); $x2 = mysql_clean($array['end_x']); $y = mysql_clean($array['start_y']); $y2 = mysql_clean($array['end_y']); if (!is_numeric($x) || !is_numeric($x2) || !is_numeric($y) || !is_numeric($y2)) { e('Unable to crop. Coordinates were unrealiable.'); } else { /* * We will be using the original photo to crop the avatar. * First we'll covert the posted pixels to percentage * Second get pixels from original photo using percentage * Using newly computed pixels crop from original photo * Save it in avatar collection, make it source and start making avatars */ $xx = $x / $pd['l']['width'] * 100; // compute percentage $xx2 = $x2 / $pd['l']['width'] * 100; // compute percentage $newX = $xx * $pd['o']['width'] / 100; // compute pixels $newX2 = $xx2 * $pd['o']['width'] / 100; // compute pixels $yy = $y / $pd['l']['height'] * 100; // compute percentage $yy2 = $y2 / $pd['l']['height'] * 100; // compute percentage $newY = $yy * $pd['o']['height'] / 100; // compute pixels $newY2 = $yy2 * $pd['o']['height'] / 100; // compute pixels /* set source */ $r = new CB_Resizer($source); $filename = cb_filename(); $photopath = PHOTOS_DIR . '/' . createDataFolders(PHOTOS_DIR); $avatar_dir = USER_THUMBS_DIR . '/'; $uid = $userquery->udetails['userid']; $ext = $photo['ext']; $cid = cb_create_user_avatar_collection($userquery->udetails); /* Save the cropped as original source of photo. */ $new_photo = $r->target = $photopath . '/' . $filename . "." . $photo['ext']; $r->_crop($newX, $newY, $newX2, $newY2); $r->save(); $fields = array('photo_title' => 'Avatar', 'photo_description' => ' ', 'photo_tags' => ' ', 'filename' => $filename, 'userid' => $uid, 'ext' => $photo['ext'], 'is_avatar' => true, 'collection_id' => $cid); /* Inserting photo in user's avatar collection */ $photo_id = $cbphoto->insert_photo($fields); $avatar = $uid . '_' . $filename . '.' . $ext; $avatarpath = $avatar_dir . $avatar; /* Make $new_photo the source */ $r->source = $r->target; /* Big Thumb */ $r->target = $avatarpath; $r->_resize(AVATAR_SIZE, AVATAR_SIZE); $r->save(); /* Small Thumb */ $r->target = USER_THUMBS_DIR . '/' . $uid . '_' . $filename . '-small.' . $photo['ext']; $r->_resize(AVATAR_SMALL_SIZE, AVATAR_SMALL_SIZE); $r->save(); /* Update user avatar field */ $db->update(tbl('users'), array('avatar'), array($avatar), " userid = '" . $uid . "' "); /* Update cover photo of collection */ $cbcollection->set_cover_photo($photo_id, $cid); /* go back to photo */ redirect_to($cbphoto->photo_links($photo, 'view_photo')); /* go to user profile */ //redirect_to( $userquery->profile_link(userid()) ); } }
function playlist_upload_cover($args) { global $db; $filename = $args['playlist_id']; $extension = GetExt($args['name']); $folder = create_dated_folder(PLAYLIST_COVERS_DIR); $uploaded_file = PLAYLIST_COVERS_DIR . '/' . $folder . '/' . $filename . '.' . $extension; if (!empty($filename)) { if (move_uploaded_file($args['tmp_name'], $uploaded_file)) { $cover_name = $filename . '.' . $extension; $resizer = new CB_Resizer($uploaded_file); $resizer->target = $uploaded_file; $resizer->resize(1280, 800); $resizer->save(); $db->update(tbl('playlists'), array('cover'), array($folder . '/' . $cover_name), " playlist_id = '" . $filename . "' "); return true; } } return false; }
/** * Update watermark file */ function update_watermark($file) { if (empty($file)) { e(lang("no_watermark_found")); } else { $oldW = BASEDIR . "/images/photo_watermark.png"; if (file_exists($oldW)) { unset($oldW); } $info = getimagesize($file['tmp_name']); $width = $info[0]; $type = $info[2]; //pr($info,TRUE); if ($type == 3) { if (move_uploaded_file($file['tmp_name'], BASEDIR . "/images/photo_watermark.png")) { $wFile = BASEDIR . "/images/photo_watermark.png"; if ($width > $this->max_watermark_width) { /* Updating resizing code */ $img = new CB_Resizer($wFile); $img->target = $wFile; $img->_resize($this->max_watermark_width); $img->save(); //$this->createThumb( $wFile, $wFile, 'png', $this->max_watermark_width ); } } e(lang("watermark_updated"), "m"); } else { e(lang("upload_png_watermark")); } } }
/** * This will extract the most common colors from photo. * Record it's HEX code, rgb code and percent found in photo, * than before entering database, it runs through json_encode. * * @global OBJECT $db * @global OBJECT $cbphoto * @param ARRAY $photo * @return type */ function insert_photo_colors($photo) { global $db, $cbphoto; if (!is_array($photo)) { $ph = $cbphoto->get_photo($photo); } else { $ph = $photo; } if (is_array($ph) && isset($ph['photo_id'])) { if ($id = $db->select(tbl('photosmeta'), 'pmeta_id', " photo_id = '" . $ph['photo_id'] . "' AND meta_name = 'colors' ")) { return $id; } $dir = PHOTOS_DIR . '/' . get_photo_date_folder($ph) . '/'; $file = get_original_photo($ph); $path = $dir . $file; if (file_exists($path)) { $img = new CB_Resizer($path); $colors = $img->color_palette(); $img->_destroy(); // Free memory if ($colors) { $jcolors = json_encode($colors); $insert_id = $db->insert(tbl('photosmeta'), array('photo_id', 'meta_name', 'meta_value'), array($ph['photo_id'], 'colors', '|no_mc|' . $jcolors)); if ($insert_id) { return $insert_id; } } } } }