Rumah pembangunan bahagian belakang tutorial php Php图像处理类代码分享_php技巧

Php图像处理类代码分享_php技巧

May 17, 2016 am 09:13 AM
pemprosesan imej

目前只实现了三个功能:1:图片缩放,2:图片裁剪,3:加图片水印
在实例化中,通过给第二个参数传不同的值,从而实现不同的功能

复制代码 代码如下:

include "image.class.php";
$image=new image("2.png", 1, "300", "500", "5.png"); //使用图片缩放功能
$image=new image("2.png", 2, "0,0", "50,50", "5.png"); //使用图片裁剪功能
$image=new image("2.png", 3, "1.png", "0", "5.png"); //使用加图片水印功能
$image->outimage();
?>

PHP代码
复制代码 代码如下:

/*已知问题:1.在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,但PNG格式的图片无法透明。用imagecreate函数创建画布可以解决这个问题,但是缩放出来的图片色数太少了
*
*
*type值:
* (1):代表使用图片缩放功能,此时,$value1代表缩放后图片的宽度,$value2代表缩放后图片的高度
* (2):代表使用图片裁剪功能,此时,$value1代表裁剪开始点的坐标,例:从原点开始即是“0,0”前面是x轴后面是y轴,中间用,分隔,$value2代表裁剪的宽度和高度,同样也是“20,20”的形式使用
* (3):代表使用加图片水印功能,此时,$value1代表水印图片的文件名,$value2代表水印在图片中的位置,有10值个可以选,1代表左上,2代表左中,3代表左右,4代表中左,5代表中中,6代表中右,7代表下做,8代表下中,9代表下右,0代表随机位置
*
*/
class image{
private $types; //使用的功能编号,1为图片缩放功能 2为图片裁剪功能 3,为图片加图片水印功能
private $imgtype;//图片的格式
private $image; //图片资源
private $width;//图片宽度
private $height;//图片高度
private $value1;//根据所传type值的不同,$value1分别代表不同的值
private $value2;//根据所传type值的不同,$value2分别代表不同的值
private $endaddress;//输出后的地址+文件名
function __construct($imageaddress, $types, $value1="", $value2="", $endaddress){
$this->types=$types;
$this->image=$this->imagesources($imageaddress);
$this->width=$this->imagesizex();
$this->height=$this->imagesizey();
$this->value1=$value1;
$this->value2=$value2;
$this->endaddress=$endaddress;
}
function outimage(){ //根据传入type值的不同,输出不同的功能
switch($this->types){
case 1:
$this->scaling();
break;
case 2:
$this->clipping();
break;
case 3:
$this->imagewater();
break;
default:
return false;
}
}
private function imagewater(){ //加图片水印功能
//用函数获取水印文件的长和宽
$imagearrs=$this->getimagearr($this->value1);
//调用函数计算出水印加载的位置
$positionarr=$this->position($this->value2, $imagearrs[0], $imagearrs[1]);
//加水印
imagecopy($this->image, $this->imagesources($this->value1), $positionarr[0], $positionarr[1], 0, 0, $imagearrs[0], $imagearrs[1]);
//调用输出方法保存
$this->output($this->image);
}
private function clipping(){ //图片裁剪功能
//将传进来的值分别赋给变量
list($src_x, $src_y)=explode(",", $this->value1);
list($dst_w, $dst_h)=explode(",", $this->value2);
if($this->width height return false;
}
//创建新的画布资源
$newimg=imagecreatetruecolor($dst_w, $dst_h);
//进行裁剪
imagecopyresampled($newimg, $this->image, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $dst_w, $dst_h);
//调用输出方法保存
$this->output($newimg);
}
private function scaling(){ //图片缩放功能
//获取等比缩放的宽和高
$this-> proimagesize();
//根据参数进行缩放,并调用输出函数保存处理后的文件
$this->output($this->imagescaling());
}
private function imagesources($imgad){ //获取图片类型并打开图像资源
$imagearray=$this->getimagearr($imgad);
switch($imagearray[2]){
case 1://gif
$this->imgtype=1;
$img=imagecreatefromgif($imgad);
break;
case 2://jpeg
$this->imgtype=2;
$img=imagecreatefromjpeg($imgad);
break;
case 3://png
$this->imgtype=3;
$img=imagecreatefrompng($imgad);
break;
default:
return false;
}
return $img;
}
private function imagesizex(){ //获得图片宽度
return imagesx($this->image);
}
private function imagesizey(){ //获取图片高度
return imagesy($this->image);
}
private function proimagesize(){ //计算等比缩放的图片的宽和高
if($this->value1 && ($this->width height)) { //等比缩放算法
$this->value1=round(($this->value2/ $this->height)*$this->width);
}else{
$this->value2=round(($this->value1/ $this->width) * $this->height);
}
}
private function imagescaling(){//图像缩放功能,返回处理后的图像资源
$newimg=imagecreatetruecolor($this->value1, $this->value2);
$tran=imagecolortransparent($this->image);//处理透明算法
if($tran >= 0 && $tran image)){
$tranarr=imagecolorsforindex($this->image, $tran);
$newcolor=imagecolorallocate($newimg, $tranarr['red'], $tranarr['green'], $tranarr['blue']);
imagefill($newimg, 0, 0, $newcolor);
imagecolortransparent($newimg, $newcolor);
}
imagecopyresampled($newimg, $this->image, 0, 0, 0, 0, $this->value1, $this->value2, $this->width, $this->height);
return $newimg;
}
private function output($image){//输出图像
switch($this->imgtype){
case 1:
imagegif($image, $this->endaddress);
break;
case 2:
imagejpeg($image, $this->endaddress);
break;
case 3:
imagepng($image, $this->endaddress);
break;
default:
return false;
}
}
private function getimagearr($imagesou){//返回图像属性数组方法
return getimagesize($imagesou);
}
private function position($num, $width, $height){//根据传入的数字返回一个位置的坐标,$width和$height分别代表插入图像的宽和高
switch($num){
case 1:
$positionarr[0]=0;
$positionarr[1]=0;
break;
case 2:
$positionarr[0]=($this->width-$width)/2;
$positionarr[1]=0;
break;
case 3:
$positionarr[0]=$this->width-$width;
$positionarr[1]=0;
break;
case 4:
$positionarr[0]=0;
$positionarr[1]=($this->height-$height)/2;
break;
case 5:
$positionarr[0]=($this->width-$width)/2;
$positionarr[1]=($this->height-$height)/2;
break;
case 6:
$positionarr[0]=$this->width-$width;
$positionarr[1]=($this->height-$height)/2;
break;
case 7:
$positionarr[0]=0;
$positionarr[1]=$this->height-$height;
break;
case 8:
$positionarr[0]=($this->width-$width)/2;
$positionarr[1]=$this->height-$height;
break;
case 9:
$positionarr[0]=$this->width-$width;
$positionarr[1]=$this->height-$height;
break;
case 0:
$positionarr[0]=rand(0, $this->width-$width);
$positionarr[1]=rand(0, $this->height-$height);
break;
}
return $positionarr;
}
function __destruct(){
imagedestroy($this->image);
}
}
?>
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah jarak Wasserstein digunakan dalam tugas pemprosesan imej? Bagaimanakah jarak Wasserstein digunakan dalam tugas pemprosesan imej? Jan 23, 2024 am 10:39 AM

Jarak Wasserstein, juga dikenali sebagai Jarak EarthMover (EMD), ialah metrik yang digunakan untuk mengukur perbezaan antara dua taburan kebarangkalian. Berbanding dengan perbezaan tradisional KL atau perbezaan JS, jarak Wasserstein mengambil kira maklumat struktur antara pengedaran dan oleh itu mempamerkan prestasi yang lebih baik dalam banyak tugas pemprosesan imej. Dengan mengira kos pengangkutan minimum antara dua pengedaran, jarak Wasserstein dapat mengukur jumlah kerja minimum yang diperlukan untuk mengubah satu pengedaran kepada yang lain. Metrik ini mampu menangkap perbezaan geometri antara taburan, dengan itu memainkan peranan penting dalam tugas seperti penjanaan imej dan pemindahan gaya. Oleh itu, jarak Wasserstein menjadi konsep

Analisis mendalam tentang prinsip kerja dan ciri-ciri model Pengubah Penglihatan (VIT). Analisis mendalam tentang prinsip kerja dan ciri-ciri model Pengubah Penglihatan (VIT). Jan 23, 2024 am 08:30 AM

VisionTransformer (VIT) ialah model klasifikasi imej berasaskan Transformer yang dicadangkan oleh Google. Tidak seperti model CNN tradisional, VIT mewakili imej sebagai jujukan dan mempelajari struktur imej dengan meramalkan label kelas imej. Untuk mencapai matlamat ini, VIT membahagikan imej input kepada berbilang patch dan menggabungkan piksel dalam setiap patch melalui saluran dan kemudian melakukan unjuran linear untuk mencapai dimensi input yang dikehendaki. Akhir sekali, setiap tampalan diratakan menjadi satu vektor, membentuk urutan input. Melalui mekanisme perhatian kendiri Transformer, VIT dapat menangkap hubungan antara tampalan yang berbeza dan melakukan pengekstrakan ciri dan ramalan klasifikasi yang berkesan. Perwakilan imej bersiri ini ialah

Cara menggunakan teknologi AI untuk memulihkan foto lama (dengan contoh dan analisis kod) Cara menggunakan teknologi AI untuk memulihkan foto lama (dengan contoh dan analisis kod) Jan 24, 2024 pm 09:57 PM

Pemulihan foto lama ialah kaedah menggunakan teknologi kecerdasan buatan untuk membaiki, menambah baik dan menambah baik foto lama. Menggunakan penglihatan komputer dan algoritma pembelajaran mesin, teknologi ini secara automatik boleh mengenal pasti dan membaiki kerosakan dan kecacatan pada foto lama, menjadikannya kelihatan lebih jelas, lebih semula jadi dan lebih realistik. Prinsip teknikal pemulihan foto lama terutamanya merangkumi aspek-aspek berikut: 1. Penyahnosian dan penambahbaikan imej Apabila memulihkan foto lama, foto itu perlu dibunyikan dan dipertingkatkan terlebih dahulu. Algoritma dan penapis pemprosesan imej, seperti penapisan min, penapisan Gaussian, penapisan dua hala, dsb., boleh digunakan untuk menyelesaikan masalah bunyi dan bintik warna, dengan itu meningkatkan kualiti foto. 2. Pemulihan dan pembaikan imej Dalam foto lama, mungkin terdapat beberapa kecacatan dan kerosakan, seperti calar, retak, pudar, dsb. Masalah ini boleh diselesaikan dengan algoritma pemulihan dan pembaikan imej

Pembangunan Java: bagaimana untuk melaksanakan pengecaman dan pemprosesan imej Pembangunan Java: bagaimana untuk melaksanakan pengecaman dan pemprosesan imej Sep 21, 2023 am 08:39 AM

Pembangunan Java: Panduan Praktikal untuk Pengecaman dan Pemprosesan Imej Abstrak: Dengan perkembangan pesat penglihatan komputer dan kecerdasan buatan, pengecaman dan pemprosesan imej memainkan peranan penting dalam pelbagai bidang. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk melaksanakan pengecaman dan pemprosesan imej, serta menyediakan contoh kod khusus. 1. Prinsip asas pengecaman imej Pengecaman imej merujuk kepada penggunaan teknologi komputer untuk menganalisis dan memahami imej untuk mengenal pasti objek, ciri atau kandungan dalam imej. Sebelum melakukan pengecaman imej, kita perlu memahami beberapa teknik pemprosesan imej asas, seperti yang ditunjukkan dalam rajah

Aplikasi teknologi AI dalam pembinaan semula resolusi super imej Aplikasi teknologi AI dalam pembinaan semula resolusi super imej Jan 23, 2024 am 08:06 AM

Pembinaan semula imej resolusi super ialah proses menjana imej resolusi tinggi daripada imej resolusi rendah menggunakan teknik pembelajaran mendalam seperti rangkaian neural convolutional (CNN) dan rangkaian adversarial generatif (GAN). Matlamat kaedah ini adalah untuk meningkatkan kualiti dan perincian imej dengan menukar imej resolusi rendah kepada imej resolusi tinggi. Teknologi ini mempunyai aplikasi yang luas dalam banyak bidang, seperti pengimejan perubatan, kamera pengawasan, imej satelit, dsb. Melalui pembinaan semula imej resolusi super, kami boleh mendapatkan imej yang lebih jelas dan terperinci, membantu menganalisis dan mengenal pasti sasaran dan ciri dalam imej dengan lebih tepat. Kaedah pembinaan semula Kaedah pembinaan semula imej resolusi super secara amnya boleh dibahagikan kepada dua kategori: kaedah berasaskan interpolasi dan kaedah berasaskan pembelajaran mendalam. 1) Kaedah berasaskan interpolasi Pembinaan semula imej resolusi super berdasarkan interpolasi

Nota kajian PHP: pengecaman muka dan pemprosesan imej Nota kajian PHP: pengecaman muka dan pemprosesan imej Oct 08, 2023 am 11:33 AM

Nota kajian PHP: Pengecaman muka dan pemprosesan imej Prakata: Dengan perkembangan teknologi kecerdasan buatan, pengecaman muka dan pemprosesan imej telah menjadi topik hangat. Dalam aplikasi praktikal, pengecaman muka dan pemprosesan imej kebanyakannya digunakan dalam pemantauan keselamatan, buka kunci muka, perbandingan kad, dsb. Sebagai bahasa skrip sebelah pelayan yang biasa digunakan, PHP juga boleh digunakan untuk melaksanakan fungsi yang berkaitan dengan pengecaman muka dan pemprosesan imej. Artikel ini akan membawa anda melalui pengecaman muka dan pemprosesan imej dalam PHP, dengan contoh kod khusus. 1. Pengecaman muka dalam PHP Pengecaman muka ialah a

Algoritma Ciri Invarian Skala (SIFT). Algoritma Ciri Invarian Skala (SIFT). Jan 22, 2024 pm 05:09 PM

Algoritma Scale Invariant Feature Transform (SIFT) ialah algoritma pengekstrakan ciri yang digunakan dalam bidang pemprosesan imej dan penglihatan komputer. Algoritma ini telah dicadangkan pada tahun 1999 untuk meningkatkan pengecaman objek dan prestasi pemadanan dalam sistem penglihatan komputer. Algoritma SIFT adalah teguh dan tepat dan digunakan secara meluas dalam pengecaman imej, pembinaan semula tiga dimensi, pengesanan sasaran, penjejakan video dan medan lain. Ia mencapai invarian skala dengan mengesan titik utama dalam ruang skala berbilang dan mengekstrak deskriptor ciri tempatan di sekitar titik utama. Langkah-langkah utama algoritma SIFT termasuk pembinaan ruang skala, pengesanan titik utama, kedudukan titik utama, penetapan arah dan penjanaan deskriptor ciri. Melalui langkah-langkah ini, algoritma SIFT boleh mengekstrak ciri yang teguh dan unik, dengan itu mencapai pemprosesan imej yang cekap.

Cara menangani pemprosesan imej dan isu reka bentuk antara muka grafik dalam pembangunan C# Cara menangani pemprosesan imej dan isu reka bentuk antara muka grafik dalam pembangunan C# Oct 08, 2023 pm 07:06 PM

Cara menangani pemprosesan imej dan isu reka bentuk antara muka grafik dalam pembangunan C# memerlukan contoh kod khusus Pengenalan: Dalam pembangunan perisian moden, pemprosesan imej dan reka bentuk antara muka grafik adalah keperluan biasa. Sebagai bahasa pengaturcaraan peringkat tinggi tujuan umum, C# mempunyai pemprosesan imej yang berkuasa dan keupayaan reka bentuk antara muka grafik. Artikel ini akan berdasarkan C#, membincangkan cara menangani pemprosesan imej dan isu reka bentuk antara muka grafik, dan memberikan contoh kod terperinci. 1. Isu pemprosesan imej: Bacaan dan paparan imej: Dalam C#, bacaan dan paparan imej adalah operasi asas. Boleh digunakan.N

See all articles