本文整理汇总了PHP中ImageInterlace函数的典型用法代码示例。如果您正苦于以下问题:PHP ImageInterlace函数的具体用法?PHP ImageInterlace怎么用?PHP ImageInterlace使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ImageInterlace函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: TextToImage
function TextToImage($text, $separate_line_after_chars = 40, $size = 24, $rotate = 0, $padding = 2, $transparent = true, $color = array('red' => 0, 'grn' => 0, 'blu' => 0), $bg_color = array('red' => 255, 'grn' => 255, 'blu' => 255))
{
$amount_of_lines = ceil(strlen($text) / $separate_line_after_chars);
$x = explode("\n", $text);
$final = '';
foreach ($x as $key => $value) {
$returnes = '';
do {
$first_part = mb_substr($value, 0, $separate_line_after_chars, 'utf-8');
$value = "\n" . mb_substr($value, $separate_line_after_chars, null, 'utf-8');
$returnes .= $first_part;
} while (mb_strlen($value, 'utf-8') > $separate_line_after_chars);
$final .= $returnes . "\n";
}
$text = $final;
$width = $height = $offset_x = $offset_y = 0;
$font = $_SERVER['DOCUMENT_ROOT'] . '/assets/css/journal.ttf';
// get the font height.
$bounds = ImageTTFBBox($size, $rotate, $font, "W");
if ($rotate < 0) {
$font_height = abs($bounds[7] - $bounds[1]);
} elseif ($rotate > 0) {
$font_height = abs($bounds[1] - $bounds[7]);
} else {
$font_height = abs($bounds[7] - $bounds[1]);
}
// determine bounding box.
$bounds = ImageTTFBBox($size, $rotate, $font, $text);
if ($rotate < 0) {
$width = abs($bounds[4] - $bounds[0]);
$height = abs($bounds[3] - $bounds[7]);
$offset_y = $font_height;
$offset_x = 0;
} elseif ($rotate > 0) {
$width = abs($bounds[2] - $bounds[6]);
$height = abs($bounds[1] - $bounds[5]);
$offset_y = abs($bounds[7] - $bounds[5]) + $font_height;
$offset_x = abs($bounds[0] - $bounds[6]);
} else {
$width = abs($bounds[4] - $bounds[6]);
$height = abs($bounds[7] - $bounds[1]);
$offset_y = $font_height;
$offset_x = 0;
}
$image = imagecreate($width + $padding * 2 + 1, $height + $padding * 2 + 1);
$background = ImageColorAllocate($image, $bg_color['red'], $bg_color['grn'], $bg_color['blu']);
$foreground = ImageColorAllocate($image, $color['red'], $color['grn'], $color['blu']);
if ($transparent) {
ImageColorTransparent($image, $background);
}
ImageInterlace($image, true);
// render the image
ImageTTFText($image, $size, $rotate, $offset_x + $padding, $offset_y + $padding, $foreground, $font, $text);
imagealphablending($image, true);
imagesavealpha($image, true);
// output PNG object.
imagePNG($image, 'signature.png');
imagedestroy($image);
}
示例2: draw
function draw()
{
$width = 0;
$height = 0;
$offset_x = 0;
$offset_y = 0;
$bounds = array();
$image = "";
// get the font height.
$bounds = ImageTTFBBox($this->size, $this->rot, $this->font, "W");
if ($this->rot < 0) {
$font_height = abs($bounds[7] - $bounds[1]);
} else {
if ($this->rot > 0) {
$font_height = abs($bounds[1] - $bounds[7]);
} else {
$font_height = abs($bounds[7] - $bounds[1]);
}
}
// determine bounding box.
$bounds = ImageTTFBBox($this->size, $this->rot, $this->font, $this->msg);
if ($this->rot < 0) {
$width = abs($bounds[4] - $bounds[0]);
$height = abs($bounds[3] - $bounds[7]);
$offset_y = $font_height;
$offset_x = 0;
} else {
if ($this->rot > 0) {
$width = abs($bounds[2] - $bounds[6]);
$height = abs($bounds[1] - $bounds[5]);
$offset_y = abs($bounds[7] - $bounds[5]) + $font_height;
$offset_x = abs($bounds[0] - $bounds[6]);
} else {
$width = abs($bounds[4] - $bounds[6]);
$height = abs($bounds[7] - $bounds[1]);
$offset_y = $font_height;
$offset_x = 0;
}
}
$image = imagecreate($width + $this->padX * 2 + 1, $height + $this->padY * 2 + 1);
$background = ImageColorAllocate($image, $this->bg_red, $this->bg_grn, $this->bg_blu);
$foreground = ImageColorAllocate($image, $this->red, $this->grn, $this->blu);
if ($this->transparent) {
ImageColorTransparent($image, $background);
}
ImageInterlace($image, false);
// render the image
ImageTTFText($image, $this->size, $this->rot, $offset_x + $this->padX, $offset_y + $this->padY, $foreground, $this->font, $this->msg);
// output PNG object.
imagePNG($image);
}
示例3: NewImage
function NewImage($width, $height, $interlace = NULL)
{
$this->width = $width;
$this->height = $height;
$this->SetFont();
if (function_exists("imagecreatetruecolor")) {
$this->img = imagecreatetruecolor($this->width, $this->height);
} else {
$this->img = imagecreate($this->width, $this->height);
}
if (!$this->img) {
$this->img = imagecreate($this->width, $this->height);
}
if (!$this->img) {
return t('Unable to Initialize new GD image stream');
}
ImageInterlace($this->img, $interlace);
}
示例4: OutputThumbnail
function OutputThumbnail()
{
if (!is_resource($this->gdimg_output)) {
$this->DebugMessage('OutputThumbnail() failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
return false;
}
if (headers_sent()) {
return $this->ErrorImage('OutputThumbnail() failed - headers already sent');
exit;
}
if (!empty($this->down)) {
$downloadfilename = ereg_replace('[/\\:\\*\\?"<>|]', '_', $this->down);
if (phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0', '>=')) {
$downloadfilename = trim($downloadfilename, '.');
}
if ($downloadfilename != $this->down) {
$this->DebugMessage('renaming output file for "down" from "' . $this->down . '" to "' . $downloadfilename . '"', __FILE__, __LINE__);
}
if ($downloadfilename) {
header('Content-Disposition: attachment; filename="' . $downloadfilename . '"');
} else {
$this->DebugMessage('failed to send Content-Disposition header because $downloadfilename is empty', __FILE__, __LINE__);
}
}
ImageInterlace($this->gdimg_output, intval($this->config_output_interlace));
$ImageOutFunction = 'image' . $this->thumbnailFormat;
switch ($this->thumbnailFormat) {
case 'jpeg':
header('Content-type: image/' . $this->thumbnailFormat);
@$ImageOutFunction($this->gdimg_output, '', $this->thumbnailQuality);
break;
case 'png':
case 'gif':
header('Content-type: image/' . $this->thumbnailFormat);
@$ImageOutFunction($this->gdimg_output);
break;
}
ImageDestroy($this->gdimg_output);
return true;
}
示例5: generateImage
function generateImage($source_file, $cache_file, $resolution)
{
global $sharpen, $jpg_quality;
$extension = strtolower(pathinfo($source_file, PATHINFO_EXTENSION));
// Check the image dimensions
$dimensions = GetImageSize($source_file);
$width = $dimensions[0];
$height = $dimensions[1];
// Do we need to downscale the image?
if ($width <= $resolution) {
// no, because the width of the source image is already less than the client width
return $source_file;
}
// We need to resize the source image to the width of the resolution breakpoint we're working with
$ratio = $height / $width;
$new_width = $resolution;
$new_height = ceil($new_width * $ratio);
$dst = ImageCreateTrueColor($new_width, $new_height);
// re-sized image
switch ($extension) {
case 'png':
$src = @ImageCreateFromPng($source_file);
// original image
break;
case 'gif':
$src = @ImageCreateFromGif($source_file);
// original image
break;
default:
$src = @ImageCreateFromJpeg($source_file);
// original image
ImageInterlace($dst, true);
// Enable interlancing (progressive JPG, smaller size file)
break;
}
if ($extension == 'png') {
imagealphablending($dst, false);
imagesavealpha($dst, true);
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
imagefilledrectangle($dst, 0, 0, $new_width, $new_height, $transparent);
}
ImageCopyResampled($dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// do the resize in memory
ImageDestroy($src);
// sharpen the image?
// NOTE: requires PHP compiled with the bundled version of GD (see http://php.net/manual/en/function.imageconvolution.php)
if ($sharpen == TRUE && function_exists('imageconvolution')) {
$intSharpness = findSharp($width, $new_width);
$arrMatrix = array(array(-1, -2, -1), array(-2, $intSharpness + 12, -2), array(-1, -2, -1));
imageconvolution($dst, $arrMatrix, $intSharpness, 0);
}
$cache_dir = dirname($cache_file);
// does the directory exist already?
if (!is_dir($cache_dir)) {
if (!mkdir($cache_dir, 0755, true)) {
// check again if it really doesn't exist to protect against race conditions
if (!is_dir($cache_dir)) {
// uh-oh, failed to make that directory
ImageDestroy($dst);
sendErrorImage("Failed to create cache directory: {$cache_dir}");
}
}
}
if (!is_writable($cache_dir)) {
sendErrorImage("The cache directory is not writable: {$cache_dir}");
}
// save the new file in the appropriate path, and send a version to the browser
switch ($extension) {
case 'png':
$gotSaved = ImagePng($dst, $cache_file);
break;
case 'gif':
$gotSaved = ImageGif($dst, $cache_file);
break;
default:
$gotSaved = ImageJpeg($dst, $cache_file, $jpg_quality);
break;
}
ImageDestroy($dst);
if (!$gotSaved && !file_exists($cache_file)) {
sendErrorImage("Failed to create image: {$cache_file}");
}
return $cache_file;
}
示例6: OutputThumbnail
function OutputThumbnail()
{
$this->purgeTempFiles();
if (!$this->useRawIMoutput && !is_resource($this->gdimg_output)) {
$this->DebugMessage('OutputThumbnail() failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
return false;
}
if (headers_sent()) {
return $this->ErrorImage('OutputThumbnail() failed - headers already sent');
exit;
}
$downloadfilename = phpthumb_functions::SanitizeFilename(is_string($this->sia) ? $this->sia : ($this->down ? $this->down : 'phpThumb_generated_thumbnail' . '.' . $this->thumbnailFormat));
$this->DebugMessage('Content-Disposition header filename set to "' . $downloadfilename . '"', __FILE__, __LINE__);
if ($downloadfilename) {
header('Content-Disposition: ' . ($this->down ? 'attachment' : 'inline') . '; filename="' . $downloadfilename . '"');
} else {
$this->DebugMessage('failed to send Content-Disposition header because $downloadfilename is empty', __FILE__, __LINE__);
}
if ($this->useRawIMoutput) {
header('Content-Type: ' . phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
echo $this->IMresizedData;
} else {
$this->DebugMessage('ImageInterlace($this->gdimg_output, ' . intval($this->config_output_interlace) . ')', __FILE__, __LINE__);
ImageInterlace($this->gdimg_output, intval($this->config_output_interlace));
switch ($this->thumbnailFormat) {
case 'jpeg':
header('Content-Type: ' . phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
$ImageOutFunction = 'image' . $this->thumbnailFormat;
@$ImageOutFunction($this->gdimg_output, '', $this->thumbnailQuality);
break;
case 'png':
case 'gif':
header('Content-Type: ' . phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
$ImageOutFunction = 'image' . $this->thumbnailFormat;
@$ImageOutFunction($this->gdimg_output);
break;
case 'bmp':
if (!@(include_once dirname(__FILE__) . '/phpthumb.bmp.php')) {
$this->DebugMessage('Error including "' . dirname(__FILE__) . '/phpthumb.bmp.php" which is required for BMP format output', __FILE__, __LINE__);
return false;
}
$phpthumb_bmp = new phpthumb_bmp();
if (is_object($phpthumb_bmp)) {
$bmp_data = $phpthumb_bmp->GD2BMPstring($this->gdimg_output);
unset($phpthumb_bmp);
if (!$bmp_data) {
$this->DebugMessage('$phpthumb_bmp->GD2BMPstring() failed', __FILE__, __LINE__);
return false;
}
header('Content-Type: ' . phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
echo $bmp_data;
} else {
$this->DebugMessage('new phpthumb_bmp() failed', __FILE__, __LINE__);
return false;
}
break;
case 'ico':
if (!@(include_once dirname(__FILE__) . '/phpthumb.ico.php')) {
$this->DebugMessage('Error including "' . dirname(__FILE__) . '/phpthumb.ico.php" which is required for ICO format output', __FILE__, __LINE__);
return false;
}
$phpthumb_ico = new phpthumb_ico();
if (is_object($phpthumb_ico)) {
$arrayOfOutputImages = array($this->gdimg_output);
$ico_data = $phpthumb_ico->GD2ICOstring($arrayOfOutputImages);
unset($phpthumb_ico);
if (!$ico_data) {
$this->DebugMessage('$phpthumb_ico->GD2ICOstring() failed', __FILE__, __LINE__);
return false;
}
header('Content-Type: ' . phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
echo $ico_data;
} else {
$this->DebugMessage('new phpthumb_ico() failed', __FILE__, __LINE__);
return false;
}
break;
default:
$this->DebugMessage('OutputThumbnail failed because $this->thumbnailFormat "' . $this->thumbnailFormat . '" is not valid', __FILE__, __LINE__);
return false;
break;
}
}
return true;
}
示例7: OutputThumbnail
function OutputThumbnail()
{
if (headers_sent()) {
die('OutputThumbnail() failed - headers already sent');
}
$ImageOutFunction = 'image' . $this->thumbnailFormat;
ImageInterlace($this->gdimg_output, 1);
switch ($this->thumbnailFormat) {
case 'jpeg':
header('Content-type: image/' . $this->thumbnailFormat);
@$ImageOutFunction($this->gdimg_output, '', $this->thumbnailQuality);
break;
case 'png':
case 'gif':
header('Content-type: image/' . $this->thumbnailFormat);
@$ImageOutFunction($this->gdimg_output);
break;
}
ImageDestroy($this->gdimg_output);
return true;
}
示例8: OutputThumbnail
function OutputThumbnail()
{
if (!is_resource($this->gdimg_output)) {
$this->DebugMessage('OutputThumbnail() failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
return false;
}
if (headers_sent()) {
return $this->ErrorImage('OutputThumbnail() failed - headers already sent');
exit;
}
if ($this->down) {
$downloadfilename = ereg_replace('[/\\:\\*\\?"<>|]', '_', $this->down);
if (phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0', '>=')) {
$downloadfilename = trim($downloadfilename, '.');
}
if ($downloadfilename != $this->down) {
$this->DebugMessage('renaming output file for "down" from "' . $this->down . '" to "' . $downloadfilename . '"', __FILE__, __LINE__);
}
if ($downloadfilename) {
header('Content-Disposition: attachment; filename="' . $downloadfilename . '"');
} else {
$this->DebugMessage('failed to send Content-Disposition header because $downloadfilename is empty', __FILE__, __LINE__);
}
}
$useRawIMoutput = true;
if (@$this->getimagesizeinfo[2] != 1 || $this->thumbnailFormat != 'gif') {
$this->DebugMessage('RenderToFile skipping $useRawIMoutput because of $this->getimagesizeinfo[2] (' . @$this->getimagesizeinfo[2] . ') or $this->thumbnailFormat (' . $this->thumbnailFormat . ')', __FILE__, __LINE__);
$useRawIMoutput = false;
} else {
$UnAllowedParameters = array('sx', 'sy', 'sw', 'sh', 'xto', 'ra', 'ar', 'bg', 'bc', 'fltr');
foreach ($UnAllowedParameters as $parameter) {
if ($this->{$parameter}) {
$useRawIMoutput = false;
break;
}
}
}
if ($useRawIMoutput) {
header('Content-Type: image/' . $this->thumbnailFormat);
echo $this->IMresizedData;
} else {
ImageInterlace($this->gdimg_output, intval($this->config_output_interlace));
switch ($this->thumbnailFormat) {
case 'jpeg':
header('Content-Type: image/' . $this->thumbnailFormat);
$ImageOutFunction = 'image' . $this->thumbnailFormat;
@$ImageOutFunction($this->gdimg_output, '', $this->thumbnailQuality);
break;
case 'png':
case 'gif':
header('Content-Type: image/' . $this->thumbnailFormat);
$ImageOutFunction = 'image' . $this->thumbnailFormat;
@$ImageOutFunction($this->gdimg_output);
break;
default:
$this->DebugMessage('OutputThumbnail failed because $this->thumbnailFormat "' . $this->thumbnailFormat . '" is not valid', __FILE__, __LINE__);
return false;
break;
}
ImageDestroy($this->gdimg_output);
}
return true;
}
示例9: buildThumbnail
//.........这里部分代码省略.........
case "im":
//use ImageMagick v5.x
$cmd = '"' . $this->config->pathto_convert . '"';
if ($this->forceSize) {
$cmd .= " -crop {$this->cropWidth}x{$this->cropHeight}+{$this->cropX}+{$this->cropY}";
}
$cmd .= " -geometry {$this->thumbWidth}x{$this->thumbHeight}";
if ($this->image->type == 2) {
$cmd .= " -quality " . $this->config->thumbnail_quality;
}
if ($this->config->progressive_thumbs) {
$cmd .= " -interlace Plane";
}
if ($this->config->remove_jpeg_profile) {
$cmd .= ' +profile "*"';
}
$cmd .= ' ' . escapeshellarg($this->imagePath) . ' ' . escapeshellarg($this->thumbPath);
exec($cmd);
break;
case "im6":
//use ImageMagick v6.x
$cmd = '"' . $this->config->pathto_convert . '"';
$cmd .= ' ' . escapeshellarg($this->imagePath);
if ($this->config->progressive_thumbs) {
$cmd .= " -interlace Plane";
}
if ($this->image->type == 2) {
$cmd .= " -quality " . $this->config->thumbnail_quality;
}
if ($this->forceSize) {
$cmd .= " -crop {$this->cropWidth}x{$this->cropHeight}+{$this->cropX}+{$this->cropY}";
}
$cmd .= " -resize {$this->thumbWidth}x{$this->thumbHeight}";
if ($this->config->remove_jpeg_profile) {
$cmd .= ' +profile "*"';
}
$cmd .= ' ' . escapeshellarg($this->thumbPath);
exec($cmd);
break;
case "gd2":
case "gd1":
default:
//use GD by default
//read in image as appropriate type
switch ($this->image->type) {
case 1:
$image = ImageCreateFromGIF($this->imagePath);
break;
case 3:
$image = ImageCreateFromPNG($this->imagePath);
break;
case 2:
default:
$image = ImageCreateFromJPEG($this->imagePath);
break;
}
if ($image) {
switch ($this->config->thumbnail_software) {
case "gd2":
//create blank truecolor image
$thumb = ImageCreateTrueColor($this->thumbWidth, $this->thumbHeight);
//resize image with resampling
ImageCopyResampled($thumb, $image, 0, 0, $cropX, $cropY, $this->thumbWidth, $this->thumbHeight, $this->cropWidth, $this->cropHeight);
break;
case "gd1":
default:
//create blank 256 color image
$thumb = ImageCreate($this->thumbWidth, $this->thumbHeight);
//resize image
ImageCopyResized($thumb, $image, 0, 0, $cropX, $cropY, $this->thumbWidth, $this->thumbHeight, $this->cropWidth, $this->cropHeight);
break;
}
}
/*else {
$thumb = ImageCreate($this->thumbWidth, $this->thumbHeight);
$bg = ImageColorAllocate($thumb, 255, 255, 255);
$text = ImageColorAllocate($thumb, 255, 0, 0);
ImageString($thumb, 1, 0, 0, "Cannot load source image", $text);
}*/
//set image interlacing
@ImageInterlace($thumb, $this->config->progressive_thumbs);
//output image of appropriate type
switch ($this->image->type) {
case 1:
//GIF images are saved as PNG
//GIF images are saved as PNG
case 3:
ImagePNG($thumb, $this->thumbPath);
break;
case 2:
default:
ImageJPEG($thumb, $this->thumbPath, $this->config->thumbnail_quality);
break;
}
@ImageDestroy($image);
@ImageDestroy($thumb);
}
//set file permissions on newly created thumbnail
@chmod($this->thumbPath, octdec($this->config->file_mode));
}
示例10: complete
function complete()
{
ImageInterlace($this->im, 1);
ImagePNG($this->im);
ImageDestroy($this->im);
}
示例11: resize_image
function resize_image($image, $crop = false, $size = null, $addWatermark = false)
{
$file = $image;
$image = ImageCreateFromString(file_get_contents($image));
if (is_resource($image) === true) {
$x = 0;
$y = 0;
$width = imagesx($image);
$height = imagesy($image);
/*
CROP (Aspect Ratio) Section-----------------------------------------------------------------
*/
if ($crop == false) {
$crop = array($width, $height);
} else {
$crop = array_filter(explode(':', $crop));
// $crop = explode(':', $crop); print_r($crop);
//detect if width and height ratio is "auto"
if ($crop[1] == 'auto' && $crop[0] === 'auto') {
$crop = array($width, $height);
}
//detect if height ratio is "auto"
if ($crop[1] == 'auto') {
$crop[1] = intval($crop[0] * $height / $width);
}
//end
//detect if width ratio is "auto"
if ($crop[0] == 'auto') {
$crop[0] = intval($crop[1] * $width / $height);
}
//end
if (empty($crop) === true) {
$crop = array($width, $height);
} else {
if (empty($crop[0]) == true || is_numeric($crop[0]) == false) {
$crop[0] = $crop[1];
} else {
if (empty($crop[1]) == true || is_numeric($crop[1]) == false) {
$crop[1] = $crop[0];
}
}
}
$ratio = array(0 => $width / $height, 1 => $crop[0] / $crop[1]);
if ($ratio[0] > $ratio[1]) {
$width = $height * $ratio[1];
$x = (imagesx($image) - $width) / 2;
} else {
if ($ratio[0] < $ratio[1]) {
$height = $width / $ratio[1];
$y = (imagesy($image) - $height) / 2;
}
}
}
/*
Resize Section-------------------------------------------------------------------------------
*/
if (is_null($size) === true) {
$size = array($width, $height);
$indexedSize = $width . "x" . $height;
} else {
$indexedSize = $size;
$size = array_filter(explode('x', $size));
if (empty($size) === true) {
$size = array(imagesx($image), imagesy($image));
} else {
if (empty($size[0]) === true || is_numeric($size[0]) === false) {
$size[0] = round($size[1] * $width / $height);
} else {
if (empty($size[1]) === true || is_numeric($size[1]) === false) {
$size[1] = round($size[0] * $height / $width);
}
}
}
}
$result = ImageCreateTrueColor($size[0], $size[1]);
//get file ext and remove it
$filename = explode('.', $file);
$ext = "." . end($filename);
array_pop($filename);
$filename = implode('.', $filename);
//insert image resized dimension into image name
$filename = explode("/", $filename);
#$img_name = implode("x", $size) . '-' . end($filename);
$img_name = $indexedSize . '-' . end($filename);
array_pop($filename);
$filepath = implode('/', $filename);
$filename = $filepath . '/' . $img_name . $ext;
if (is_file($filename)) {
unlink($filename);
}
#imagejpeg($result, $filename, 100);
if (is_resource($result) === true) {
ImageSaveAlpha($result, true);
ImageAlphaBlending($result, true);
ImageFill($result, 0, 0, ImageColorAllocate($result, 255, 255, 255));
//ImageCopyResampled($result, $image, 0, -10, $x, $y, $size[0], $size[1], $width, $height); // upload axis y start at -20
ImageCopyResampled($result, $image, 0, 0, $x, $y, $size[0], $size[1], $width, $height);
// upload axis y start at -20
ImageInterlace($result, true);
ImageJPEG($result, $filename, 100);
//.........这里部分代码省略.........
示例12: edit_image
//.........这里部分代码省略.........
// DEBIAN EDGE FIX => crashes at imagefill, so use old Method
if($GDInfo["GD Version"] === '2.0 or higher' && !function_exists("imagerotate")){
// set black to transparent!
if($output_format === 'gif' || $output_format === 'png'){ // transparency with gifs
imagecolortransparent($_output_gdimg, imagecolorallocate($_output_gdimg, 0, 0, 0)); // set this color to transparent - done
}
} else {
*/
// preserve transparency of png and gif images:
switch ($output_format) {
case "gif":
$colorTransparent = imagecolortransparent($_gdimg);
imagepalettecopy($_gdimg, $_output_gdimg);
imagefill($_output_gdimg, 0, 0, $colorTransparent);
imagecolortransparent($_output_gdimg, $colorTransparent);
imagetruecolortopalette($_output_gdimg, true, 256);
break;
case "png":
imagealphablending($_output_gdimg, false);
//$transparent = imagecolorallocatealpha($_output_gdimg, 0, 0, 0, 127);
$transparent = imagecolorallocatealpha($_output_gdimg, 255, 255, 255, 127);
imagefill($_output_gdimg, 0, 0, $transparent);
imagesavealpha($_output_gdimg, true);
break;
default:
}
//}
// Resize image
//if($_outsize["width"] == "1")
if ($fitinside && $keep_aspect_ratio && $width && $height) {
$wratio = $width / $_width;
$hratio = $height / $_height;
$ratio = max($width / $_width, $height / $_height);
$h = $height / $ratio;
$w = $width / $ratio;
if ($wratio < $hratio) {
$x = ($_width - $width / $ratio) / 2;
$y = 0;
} else {
$x = 0;
$y = ($_height - $height / $ratio) / 2;
}
// Set thumbnail focus point -ah2015
if (true) {
echo '<script>console.log("TX:"+' . $x . ', "TY:"+' . $y . ', "OWidth:"+' . $_width . ', "TWidth"+' . $width . ', "OHeight:"+' . $_height . ', "THeight"+' . $height . ');</script>';
$x_focus = $crop_x;
// von -1.0 bis 1.0
$y_focus = $crop_y;
// von -1.0 bis 1.0
$x = $x + $x * $x_focus;
$y = $y + $y * $y_focus;
}
$_image_resize_function($_output_gdimg, $_gdimg, 0, 0, $x, $y, $width, $height, $w, $h);
} else {
$_image_resize_function($_output_gdimg, $_gdimg, 0, 0, 0, 0, $_outsize["width"], $_outsize["height"], $_width, $_height);
}
// PHP 4.4.1 GDLIB-Bug/Safemode - Workarround
if ($output_filename != "" && file_exists($output_filename)) {
touch($output_filename);
}
ImageInterlace($_output_gdimg, $interlace ? 1 : 0);
switch ($output_format) {
case 'jpg':
// Output to a filename or directly
if ($output_filename != "") {
$_gdimg = imagejpeg($_output_gdimg, $output_filename, $output_quality);
if ($_gdimg) {
$_gdimg = basename($output_filename);
}
} elseif ($_tempfilename = tempnam(TEMP_PATH, "")) {
imagejpeg($_output_gdimg, $_tempfilename, $output_quality);
$_gdimg = we_base_file::load($_tempfilename);
// As we read the temporary file we no longer need it
//unlink($_tempfilename);
}
break;
case 'png':
case 'gif':
// Set output function
$_image_out_function = 'image' . $output_format;
// Output to a filename or directly
if ($output_filename) {
$_gdimg = $_image_out_function($_output_gdimg, $output_filename);
if ($_gdimg) {
$_gdimg = basename($output_filename);
}
} elseif ($_tempfilename = tempnam(TEMP_PATH, "")) {
$_image_out_function($_output_gdimg, $_tempfilename);
$_gdimg = we_base_file::load($_tempfilename);
// As we read the temporary file we no longer need it
unlink($_tempfilename);
}
break;
}
ImageDestroy($_output_gdimg);
}
return isset($_gdimg) ? array($_gdimg, $_outsize["width"], $_outsize["height"]) : array(false, -1, -1);
}
return array(false, -1, -1);
}
示例13: constrain
/**
* SICWebImage::constrain() - a GD library-based crop and resize utility
* function
*
* Props to Alix Axel and monowerker at <http://stackoverflow.com/questions/999250/php-gd-cropping-and-resizing-images>
* for some nice packaging of the code to do this with only the GD library
* functions.
*/
function constrain($crop = null, $size = null)
{
$ret = NULL;
if ($this->is_image() and (!is_null($crop) or !is_null($size))) {
if (self::has_gd()) {
$image = ImageCreateFromString($this->data());
$data = NULL;
$mimetype = NULL;
if (is_resource($image) === true) {
$x = 0;
$y = 0;
$width = imagesx($image);
$height = imagesy($image);
/*
CROP (Aspect Ratio) Section
*/
if (is_null($crop) === true) {
$crop = array($width, $height);
} else {
$crop = array_filter(explode(':', $crop));
if (empty($crop) === true) {
$crop = array($width, $height);
} else {
if (empty($crop[0]) === true || is_numeric($crop[0]) === false) {
$crop[0] = $crop[1];
} elseif (empty($crop[1]) === true || is_numeric($crop[1]) === false) {
$crop[1] = $crop[0];
}
}
$ratio = array(0 => $width / $height, 1 => $crop[0] / $crop[1]);
if ($ratio[0] > $ratio[1]) {
$width = $height * $ratio[1];
$x = (imagesx($image) - $width) / 2;
} elseif ($ratio[0] < $ratio[1]) {
$height = $width / $ratio[1];
$y = (imagesy($image) - $height) / 2;
}
}
/*
Resize Section
*/
if (is_null($size) === true) {
$size = array($width, $height);
} else {
$size = array_filter(explode('x', $size));
if (empty($size) === true) {
$size = array(imagesx($image), imagesy($image));
} else {
if (empty($size[0]) === true || is_numeric($size[0]) === false) {
$size[0] = round($size[1] * $width / $height);
} elseif (empty($size[1]) === true || is_numeric($size[1]) === false) {
$size[1] = round($size[0] * $height / $width);
}
}
}
$result = ImageCreateTrueColor($size[0], $size[1]);
if (is_resource($result) === true) {
ImageSaveAlpha($result, true);
ImageAlphaBlending($result, true);
ImageFill($result, 0, 0, ImageColorAllocate($result, 255, 255, 255));
ImageCopyResampled($result, $image, 0, 0, $x, $y, $size[0], $size[1], $width, $height);
ImageInterlace($result, true);
ob_start();
// *sigh*
ImageJPEG($result, null, 90);
$mimetype = 'image/jpeg';
$data = ob_get_clean();
// *sigh*
}
}
// (is_resource($image) === true)
$ret = array($data, $mimetype);
}
// function_exists('ImageCreateFromString')
if (!is_null($ret) and !is_null($ret[0])) {
$this->set_image($ret[0], $ret[1]);
}
}
return $ret;
}
示例14: _createTTFImage
protected static function _createTTFImage($txt)
{
if (!self::getInstance()) {
return NULL;
}
/* else */
$bounds = ImageTTFBBox(self::$_font["size"], 0, self::$_font["family"], "W");
$fontHeight = abs($bounds[7] - $bounds[1]);
$bounds = ImageTTFBBox(self::$_font["size"], 0, self::$_font["family"], $txt);
$width = abs($bounds[4] - $bounds[6]);
$height = abs($bounds[7] - $bounds[1]);
$offsetY = $fontHeight;
$offsetX = 0;
$image = imagecreate($width + self::$_padding * 2 + 1, $height + self::$_padding * 2 + 1);
$background = ImageColorAllocate($image, self::$_backgroundColor["color"]["red"], self::$_backgroundColor["color"]["green"], self::$_backgroundColor["color"]["blue"]);
$foreground = ImageColorAllocate($image, self::$_font["color"]["red"], self::$_font["color"]["green"], self::$_font["color"]["blue"]);
if (self::$_transparent) {
ImageColorTransparent($image, $background);
}
ImageInterlace($image, false);
// render the image
ImageTTFText($image, self::$_font["size"], 0, $offsetX + self::$_padding, $offsetY + self::$_padding, $foreground, self::$_font["family"], $txt);
// print_r( self::$_font );
return $image;
}
示例15: elseif
} elseif ($page_ip < 1000) {
$page_ip_txt = "00000{$page_ip}";
} elseif ($page_ip < 10000) {
$page_ip_txt = "0000{$page_ip}";
} elseif ($page_ip < 100000) {
$page_ip_txt = "000{$page_ip}";
} elseif ($page_ip < 1000000) {
$page_ip_txt = "00{$page_ip}";
} elseif ($page_ip < 10000000) {
$page_ip_txt = "0{$page_ip}";
} elseif ($page_ip < 100000000) {
$page_ip_txt = "{$page_ip}";
} else {
$page_ip_txt = " Error!";
}
// show img -------------------------
header('Content-type: image/' . $lvc_images_format);
$imgfile = 'images/counter.' . $lvc_images_format;
$fct_imagecreatefrom = 'imagecreatefrom' . $lvc_images_format;
$img = $fct_imagecreatefrom($imgfile);
$black = imagecolorallocate($img, 0, 0, 0);
$white = imagecolorallocate($img, 255, 255, 255);
$yellow = imagecolorallocate($img, 255, 255, 0);
ImageString($img, 3, 26, 5, "{$page_ip_txt}", $black);
ImageString($img, 3, 25, 4, "{$page_ip_txt}", $white);
ImageString($img, 1, 5, 22, $count_date, $black);
ImageString($img, 1, 4, 21, $count_date, $yellow);
ImageInterlace($img, 1);
$fct_image = 'image' . $lvc_images_format;
$fct_image($img);
ImageDestroy($img);