Hey, i'd like to give the group user the opportunity to upload pngs and therefor i want the transparency to be maintained. So right now all alpha channels are underlayed with a white background. Can i disable this ? or at least make the background black?
Actually you could create a flag in that function to allow or forbid the transparency
Theres no hook or callback placed for the lib image, expect the image size...
Could you update the ossn.lib.image?
( inspired by -> Simon Jarvis https://gist.github.com/laminr/8390141 )
// Get the size information from the image
$info = getimagesize($input_name);
if ($info == false) {
return false;
}
$width = $info[0];
$height = $info[1];
$accepted_formats = array(
'image/jpeg' => 'jpeg',
'image/pjpeg' => 'jpeg',
'image/png' => 'png',
'image/x-png' => 'png',
'image/gif' => 'gif'
);
// make sure the function is available
$load_function = "imagecreatefrom" . $accepted_formats[$info['mime']];
if (!is_callable($load_function)) {
return false;
}
// get the parameters for resizing the image
$options = array(
'maxwidth' => $maxwidth,
'maxheight' => $maxheight,
'square' => $square,
'upscale' => $upscale,
'x1' => $x1,
'y1' => $y1,
'x2' => $x2,
'y2' => $y2,
);
$params = ossn_image_resize_parameters($width, $height, $options);
if ($params == false) {
return false;
}
// load original image
$original_image = call_user_func($load_function, $input_name);
if (!$original_image) {
return false;
}
// allocate the new image
$new_image = imagecreatetruecolor($params['newwidth'], $params['newheight']);
if (!$new_image) {
return false;
}
if ( ( $info[2] == IMAGETYPE_GIF ) || ( $info[2] == IMAGETYPE_PNG ) ) {
$trnprt_indx = imagecolortransparent( $original_image );
// If we have a specific transparent color
if ($trnprt_indx >= 0) {
// Get the original image's transparent color's RGB values
$trnprt_color = imagecolorsforindex($original_image, $trnprt_indx);
// Allocate the same color in the new image resource
$trnprt_indx = imagecolorallocate( $new_image, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
// Completely fill the background of the new image with allocated color.
imagefill( $new_image, 0, 0, $trnprt_indx);
// Set the background color for new image to transparent
imagecolortransparent( $new_image, $trnprt_indx);
}
// Always make a transparent background color for PNGs that don't have one allocated already
elseif ($info[2] == IMAGETYPE_PNG) {
// Turn off transparency blending (temporarily)
imagealphablending( $new_image, false);
// Create a new transparent color for image
$color = imagecolorallocatealpha( $new_image, 0, 0, 0, 127);
// Completely fill the background of the new image with allocated color.
imagefill( $new_image, 0, 0, $color);
// Restore transparency blending
imagesavealpha( $new_image, true);
}
}
// imagecopyresampled( $newimage, $originalimage, 0, 0, 0, 0, $finalwidth, $finalheight, $widthold, $heightold);
// color transparencies white (default is black)
// imagefilledrectangle($newimage, 0, 0, $params['newwidth'], $params['newheight'], imagecolorallocate($newimage, 255, 255, 255));
$rtn_code = imagecopyresampled($new_image, $original_image, 0, 0, $params['xoffset'], $params['yoffset'], $params['newwidth'], $params['newheight'], $params['selectionwidth'], $params['selectionheight']);
if (!$rtn_code) {
return false;
}
// grab a compressed jpeg version of the image
ob_start();
switch ( $info[2] ) {
case IMAGETYPE_GIF:
imagegif( $new_image, $output);
break;
case IMAGETYPE_JPEG:
imagejpeg( $new_image, $output);
break;
case IMAGETYPE_PNG:
imagepng( $new_image, $output );
break;
default: return false;
}
$final_image = ob_get_clean();
imagedestroy( $new_image );
imagedestroy( $original_image );
return $final_image;
Hi Julius, Its a good idea, we are still thinking to take this into consideration if you create ticket on github , i'll mark it as feature request and will take a look in future version.
Due to the many requests in the past for additonal features and components we have decided to develope a premium version. Features like Hashtags, Videos, Polls, Events, Stories, Link Preview, etc included in it.
$199 (Life Time)