php 图片处理相关函数

1.创建图像函数

imagecreatefrom*( )

从*文件或 URL 新建一图像

imagecreatefromgif( ): 根据GIF文件或者URL新建一个图像,返回图像标识符。

imagecreatefromjpeg( ): 根据JPG文件或者URL新建一个图像,返回图像标识符。

imagecreatefrompng( ): 根据PNG文件或者URL新建一个图像,返回图像标识符。

imagecreatefrombmp( ): 根据BMP文件或者URL新建一个图像,返回图像标识符。

… …

 

 

2.操作图像函数

imagettftext()

用 TrueType 字体向图像写入文本

array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )

imagestring()

bool imagestring ( resource image, int font, int x, int y, string s, int col )

水平地画一行字符串

如果 font 是 1,2,3,4 或 5,则使用内置字体。

ps:如果我们设置的水印文字都是英文字符串,就没有必要应用icon( )函数对字符串的编码格式进行转换,可以直接使用imagestring( )函数完成字符串的绘制操作。

但是当我们设置的水印文字是中文字符串时,使用imagestring( )函数就行不通了,必须使用imagettftext( )函数绘制中文字符串,同时还要通过iconv( )函数对字符串的编码格式进行转换。

imagecolorallocate()

为一幅图像分配颜色

int imagecolorallocate ( resource image, int red, int green, int blue )

第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色

imagefill()

区域填充

bool imagefill ( resource image, int x, int y, int color )

imagecopyresized()

拷贝部分图像并调整大小

bool imagecopyresized ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )

imagecopyresized()

将一幅图像中的一块正方形区域拷贝到另一个图像中。dst_image 和 src_image 分别是目标图像和源图像的标识符。如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝(如果 dst_image 和 src_image 相同的话)区域,但如果区域交迭的话则结果不可预知。

imagesetpixel()

画一个单一像素

bool imagesetpixel ( resource image, int x, int y, int color )

imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。

//画点

for($i=0;$i<50;$i++){

imagesetpixel($im,rand()%100,rand()%50,$textco);

}

 

getimagesize()

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。

Print_r输出后

Array ( [0] => 1024 [1] => 1024 [2] => 2 [3] => width="1024" height="1024" [bits] => 8 [channels] => 3 [mime] => image/jpeg )

键名0:图形文件宽的像素值

键名1:图形文件高的像素值

键名2:图形类型的标记  其中 1=GIF  2 =JPG  3=PNG  。。。

键名3:是一个字符串,其形式是, width=图形的宽度  height=图形的高度    这个字符串,可用于HTML中IMG标记,设置图形的宽与高

键名bits:图形颜色的位数

键名channels:当其值是3时,对应RGB图形;当其值是4时,对应CMYK图形,此键名只有在测试的文件是JPG格式时才返回

键名mime:图形类型的MIME值  

 

imagecopy()

拷贝图像的一部分

bool imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )

将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

 

 

3.输出图像函数

image*( )

与*格式相对应,输出图像函数

imagegif( ): 以GIF格式将图像输出到浏览器或文件。

imagejpeg( ): 以JPG格式将图像输出到浏览器或文件。

imagepng( ): 以PNG格式将图像输出到浏览器或文件。

imagebmp( ): 以BMP格式将图像输出到浏览器或文件。

… …

 

 

4.销毁图像函数

imagedestroy ( resource image )

使用imagedestroy( )函数可以释放与image关联的内存,参数image是由图像创建函数返回的图像标识符

 

5.其他

rand(x,y)

产生一个随机整数

dechex()

十进制转换为十六进制,包括数字1-9,字母a-f

iconv()

编码转换函数,用于对指定字符串的编码格式进行转换。例如:$text = iconv ( “ gb2312 ” , “ utf-8 ” , $watherimage ) ;

这里将字符串的格式由gb2312编码转换为UTF-8编码,因为imagettftext( )函数只支持UTF-8编码。

imageline()

画一条线段

bool imageline ( resource image, int x1, int y1, int x2, int y2, int color )

imageline() 用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。

<div class="post-text" itemprop="text"> <p>What I'm trying to do is convert an 8 bit image to a 16 bit image using php ImageMagick. With Imagick it's as easy as <code>convert /location/image.jpg -colors 8 -depth 16 txt:-</code>. In the PHP docs it shows that you can do it using <code>$imagick->setImageDepth(16);</code> but the problem is that it doesn't give you the 16 bit hex / rgb numbers.</p> <p>Is there an advantage to using 16 bit when trying to extract colors from an image? If not then I'm wondering isn't the php function working?</p> <p>Here is what I get from <code>$mapColor->getColor()</code>:</p> <pre><code>Array ( [r] => 51 [g] => 51 [b] => 51 [a] => 1 ) Array </code></pre> <p>Here is my code for getting colors:</p> <pre><code>// Create new instance $imagick = new Imagick($image); // Set number of colors $numberColors = 6; // Set colorspace $colorSpace = Imagick::COLORSPACE_SRGB; // Set tree depth $treeDepth = 0; // Set dither $dither = false; // Convert to 16 bit $imagick->setImageDepth(16); // Quantize image to number of colors $imagick->quantizeImage($numberColors, $colorSpace, $treeDepth, $dither, false); // Get Image Dimensions $sizes = $imagick->getImageGeometry(); // Get image's histogram $pixels = $imagick->getImageHistogram(); // Temp cache dimensions $totalSize = $sizes['width'] * $sizes['height']; // Loop through each pixel foreach($pixels as $k => $v) { // Get total number of color instances $count = $v->getColorCount(); // Get colormap at pixel $mapColor = $imagick->getImageColormapColor($k); // Get colore $rgbColor = $mapColor->getColor(); // Convert to RGB hex values $red = str_pad(dechex($rgbColor['r']), 2, 0, STR_PAD_LEFT); $green = str_pad(dechex($rgbColor['g']), 2, 0, STR_PAD_LEFT); $blue = str_pad(dechex($rgbColor['b']), 2, 0, STR_PAD_LEFT); // Set hexadecimal $hex = $red.$green.$blue; // Calculate color percentage $percentage = (100 * $count) / $totalSize; // Push colors into array $colors[] = array( 'red' => $rgbColor['r'], 'green' => $rgbColor['g'], 'blue' => $rgbColor['b'], 'hex' => $hex, 'count' => $count, 'percentage' => $percentage, ); } print_r($colors); </code></pre> </div>
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页