php等比缩放图片

Jul 28, 2016 am 08:26 AM
break NIM param

步骤如下:
1.获取图片的基本信息
用这个getimagesize函数

2.判断图片资源类型并创建对应图片资源
用这个getPicType函数(自定义函数)

3.计算缩放比例
原则是取最小的缩放系数.例如:800*600的图片,缩放到200*200以下,则缩放系数为scale=200/800>200/600?200/600:200/800; 因为1/4

4.计算缩放后的尺寸
wdith = floor(800*1/4);向下取整
height = floor(600*1/4);
结果缩放后的图片变为200*150

5.创建目标图像资源
用这个imagecreatetruecolor函数,创建一个真彩的图像

6.等比缩放
用这个imagecopyresampled函数实现缩放

7.输出图像
用这个outputImage函数(自定义函数)

8.释放图片资源
用这个imagedestroy函数

缩放前后如图:
750*525
 php等比缩放图片
200*140
 php等比缩放图片

代码如下:

<code><span>/**
 *<span> @function</span> 等比缩放函数(以保存的方式实现)
 *<span> @param</span> string $picname 被缩放的处理图片源
 *<span> @param</span> int $maxX 缩放后图片的最大宽度
 *<span> @param</span> int $maxY 缩放后图片的最大高度
 *<span> @param</span> string $pre 缩放后图片名的前缀名
 *<span> @return</span> string 返回后的图片名称(带路径),如a.jpg --> s_a.jpg
 */</span><span><span>function</span><span>scalePic</span><span>(<span>$picname</span>,<span>$maxX</span>=<span>100</span>,<span>$maxY</span>=<span>100</span>,<span>$pre</span>=<span>'s_'</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>); <span>//获取图片的基本信息</span><span>$width</span> = <span>$info</span>[<span>0</span>];<span>//获取宽度</span><span>$height</span> = <span>$info</span>[<span>1</span>];<span>//获取高度</span><span>//判断图片资源类型并创建对应图片资源</span><span>$im</span> = getPicType(<span>$info</span>[<span>2</span>],<span>$picname</span>);
    <span>//计算缩放比例</span><span>$scale</span> = (<span>$maxX</span>/<span>$width</span>)>(<span>$maxY</span>/<span>$height</span>)?<span>$maxY</span>/<span>$height</span>:<span>$maxX</span>/<span>$width</span>;
    <span>//计算缩放后的尺寸</span><span>$sWidth</span> = floor(<span>$width</span>*<span>$scale</span>);
    <span>$sHeight</span> = floor(<span>$height</span>*<span>$scale</span>);
    <span>//创建目标图像资源</span><span>$nim</span> = imagecreatetruecolor(<span>$sWidth</span>,<span>$sHeight</span>);
    <span>//等比缩放</span>
    imagecopyresampled(<span>$nim</span>,<span>$im</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>$sWidth</span>,<span>$sHeight</span>,<span>$width</span>,<span>$height</span>);
    <span>//输出图像</span><span>$newPicName</span> = outputImage(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>);
    <span>//释放图片资源</span>
    imagedestroy(<span>$im</span>);
    imagedestroy(<span>$nim</span>);
    <span>return</span><span>$newPicName</span>;
}

<span>/**
 * function 判断并返回图片的类型(以资源方式返回)
 *<span> @param</span> int $type 图片类型
 *<span> @param</span> string $picname 图片名字
 *<span> @return</span> 返回对应图片资源
 */</span><span><span>function</span><span>getPicType</span><span>(<span>$type</span>,<span>$picname</span>)</span>
{</span><span>$im</span>=<span>null</span>;
    <span>switch</span>(<span>$type</span>)
    {
        <span>case</span><span>1</span>:  <span>//GIF</span><span>$im</span> = imagecreatefromgif(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:  <span>//JPG</span><span>$im</span> = imagecreatefromjpeg(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:  <span>//PNG</span><span>$im</span> = imagecreatefrompng(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:  <span>//BMP</span><span>$im</span> = imagecreatefromwbmp(<span>$picname</span>);
            <span>break</span>;
        <span>default</span>:
            <span>die</span>(<span>"不认识图片类型"</span>);
            <span>break</span>;
    }
    <span>return</span><span>$im</span>;
}

<span>/**
 * function 输出图像
 *<span> @param</span> string $picname 图片名字
 *<span> @param</span> string $pre 新图片名前缀
 *<span> @param</span> resourse $nim 要输出的图像资源
 *<span> @return</span> 返回新的图片名
 */</span><span><span>function</span><span>outputImage</span><span>(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>);
    <span>$picInfo</span> = pathInfo(<span>$picname</span>);
    <span>$newPicName</span> = <span>$picInfo</span>[<span>'dirname'</span>].<span>'/'</span>.<span>$pre</span>.<span>$picInfo</span>[<span>'basename'</span>];<span>//输出文件的路径</span><span>switch</span>(<span>$info</span>[<span>2</span>])
    {
        <span>case</span><span>1</span>:
            imagegif(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:
            imagejpeg(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:
            imagepng(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:
            imagewbmp(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
    }
    <span>return</span><span>$newPicName</span>;
}</code>
Salin selepas log masuk
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 php等比缩放图片,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 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)

'Kilang AI' akan mempromosikan pembentukan semula keseluruhan susunan perisian, dan NVIDIA menyediakan bekas Llama3 NIM untuk digunakan oleh pengguna 'Kilang AI' akan mempromosikan pembentukan semula keseluruhan susunan perisian, dan NVIDIA menyediakan bekas Llama3 NIM untuk digunakan oleh pengguna Jun 08, 2024 pm 07:25 PM

Menurut berita dari laman web ini pada 2 Jun, pada ucaptama Huang Renxun 2024 Taipei Computex yang sedang berlangsung, Huang Renxun memperkenalkan kecerdasan buatan generatif akan mempromosikan pembentukan semula keseluruhan timbunan perisian dan menunjukkan perkhidmatan mikro asli awan NIM (Nvidia Inference Microservices). . Nvidia percaya bahawa "kilang AI" akan mencetuskan revolusi perindustrian baharu: mengambil industri perisian yang dipelopori oleh Microsoft sebagai contoh, Huang Renxun percaya bahawa kecerdasan buatan generatif akan menggalakkan pembentukan semula timbunan penuhnya. Untuk memudahkan penggunaan perkhidmatan AI oleh perusahaan dari semua saiz, NVIDIA melancarkan perkhidmatan mikro asli awan NIM (Nvidia Inference Microservices) pada Mac tahun ini. NIM+ ialah satu set perkhidmatan mikro asli awan yang dioptimumkan untuk mengurangkan masa ke pasaran

Mari kita bincangkan tentang tidak menggunakan pemecahan dalam pernyataan suis PHP Mari kita bincangkan tentang tidak menggunakan pemecahan dalam pernyataan suis PHP Mar 20, 2023 pm 04:55 PM

Ia adalah sangat biasa untuk menggunakan pernyataan suis dalam PHP untuk memilih berbilang cawangan Biasanya, pernyataan putus digunakan untuk keluar dari pernyataan suis selepas setiap cawangan. Walau bagaimanapun, terdapat situasi di mana kita tidak mahu menggunakan penyataan rehat Artikel ini akan memperkenalkan situasi tidak menggunakan pemecahan dalam penyataan suis PHP.

Apakah kegunaan rehat dalam php Apakah kegunaan rehat dalam php Jan 31, 2023 pm 07:33 PM

Dalam PHP, break digunakan untuk melompat keluar dari struktur sintaks semasa dan melaksanakan pernyataan berikut, ia boleh digunakan dalam pernyataan seperti suis, untuk, sementara, dan lakukan sambil daripada gelung semasa serta-merta, dan laksanakan pernyataan berikut selepas kod. Pernyataan rehat boleh mengambil parameter n, menunjukkan bilangan tahap untuk melompat keluar daripada gelung Jika anda ingin melompat keluar daripada berbilang gelung, anda boleh menggunakan n untuk menunjukkan bilangan tahap untuk melompat keluar parameter, lalai adalah untuk melompat keluar dari gelung semasa.

Pembelajaran gelung JS: pecahkan kenyataan gelung putus dan teruskan Pembelajaran gelung JS: pecahkan kenyataan gelung putus dan teruskan Aug 03, 2022 pm 07:08 PM

Dalam artikel sebelum ini, kami membawa anda mempelajari beberapa struktur kawalan gelung dalam JS (gelung semasa dan lakukan-sementara, untuk gelung Mari kita bincangkan penyataan rehat dan teruskan untuk keluar dari gelung semua orang!

Apakah fungsi kata kunci break dalam Java? Apakah fungsi kata kunci break dalam Java? Apr 23, 2023 am 10:13 AM

Nota 1. Fungsi break adalah untuk melompat keluar dari blok gelung semasa (untuk, sementara, dowhile) atau blok program (suis). 2. Fungsi blok gelung adalah untuk melompat keluar dari badan gelung yang sedang berada dalam gelung. Fungsi blok program adalah untuk mengganggu dan membandingkan keadaan kes seterusnya. Gunakan pemecahan dalam pernyataan suis untuk menamatkan pernyataan suis. Apabila putus digunakan dalam gelung, ia terkeluar daripada gelung. Tidak ada gunanya menggunakan rehat di tempat lain. Contoh intsum=0;inti;for(i=1;i

Apakah kegunaan pernyataan henti henti dalam bahasa Go? Apakah kegunaan pernyataan henti henti dalam bahasa Go? Jan 18, 2023 pm 03:46 PM

Dalam bahasa Go, penyataan henti henti digunakan untuk melompat keluar dari gelung dalam penyataan gelung dan mula melaksanakan penyataan selepas gelung. Pernyataan putus boleh menamatkan blok kod untuk, tukar dan pilih Selain itu, penyataan rehat juga boleh menambah label selepas penyataan untuk menunjukkan keluar dari blok kod yang sepadan dengan label tertentu blok kod untuk, tukar dan pilih .

apa itu param linux apa itu param linux Mar 10, 2023 am 08:58 AM

Param Linux merujuk kepada fungsi "module_param", yang digunakan untuk menghantar parameter baris arahan apabila pengaturcaraan dalam mod pengguna, parameter baris arahan boleh melalui parameter "main()", dan apabila menulis modul kernel, lulus "; module_param()" untuk menghantar parameter.

Fungsi dan langkah berjaga-jaga bagi pernyataan rehat dalam PHP Fungsi dan langkah berjaga-jaga bagi pernyataan rehat dalam PHP Mar 20, 2024 pm 05:33 PM

Peranan dan langkah berjaga-jaga bagi pernyataan putus dalam PHP Dalam pengaturcaraan PHP, pernyataan putus ialah pernyataan kawalan yang digunakan untuk mengganggu pelaksanaan pernyataan gelung atau suis. Pernyataan putus boleh segera melompat keluar dari gelung semasa atau pernyataan suis, membenarkan aliran pelaksanaan program melompat terus ke bahagian kod selepas pernyataan gelung atau suis, sekali gus meningkatkan kecekapan dan fleksibiliti pelaksanaan program. Dalam pengaturcaraan sebenar, pernyataan rehat memainkan peranan penting, tetapi ia juga memerlukan perhatian kepada beberapa butiran dan langkah berjaga-jaga. 1.b

See all articles