Jadual Kandungan
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF,imagick水印
您可能感兴趣的文章:
Rumah php教程 php手册 PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF,imagick水印

PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF,imagick水印

Jun 13, 2016 am 08:45 AM
gif imagick phpcms tera air lakaran kecil tanaman

PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF,imagick水印

给骨头系统开发的图像库的 imagick 部分 ,支持 gif , 完美支持裁切、生成缩略图、添加水印 。

支持按方位生成缩略图像, 如:

// 把左上角优先
$image->resize_to(100, 100, 'north_west');
// 右边优先
$image->resize_to(100, 100, 'east');
...
Salin selepas log masuk

更多参数看源代码

原图

效果图:

调用方式:

include 'imagick.class.php'; 
$image = new lib_image_imagick(); 
$image->open('a.gif'); 
$image->resize_to(100, 100, 'scale_fill'); 
$image->add_text('1024i.com', 10, 20); 
$image->add_watermark('1024i.gif', 10, 50); 
$image->save_to('x.gif'); 
Salin selepas log masuk

imagick.class.php

<&#63;php 
/* 
@版本日期: 版本日期: 2012年1月18日 
@著作权所有: 1024 intelligence ( http://www.1024i.com ) 
获得使用本类库的许可, 您必须保留著作权声明信息. 
报告漏洞,意见或建议, 请联系 Lou Barnes(iua1024@gmail.com) 
*/ 

class lib_image_imagick 
{ 
private $image = null; 
private $type = null; 
// 构造函数 
public function __construct(){} 

// 析构函数 
public function __destruct() 
{ 
if($this->image!==null) $this->image->destroy(); 
} 
// 载入图像 
public function open($path) 
{ 
$this->image = new Imagick( $path ); 
if($this->image) 
{ 
$this->type = strtolower($this->image->getImageFormat()); 
} 
return $this->image; 
} 

public function crop($x=0, $y=0, $width=null, $height=null) 
{ 
if($width==null) $width = $this->image->getImageWidth()-$x; 
if($height==null) $height = $this->image->getImageHeight()-$y; 
if($width<=0 || $height<=0) return; 
if($this->type=='gif') 
{ 
$image = $this->image; 
$canvas = new Imagick(); 
$images = $image->coalesceImages(); 
foreach($images as $frame){ 
$img = new Imagick(); 
$img->readImageBlob($frame); 
$img->cropImage($width, $height, $x, $y); 
$canvas->addImage( $img ); 
$canvas->setImageDelay( $img->getImageDelay() ); 
$canvas->setImagePage($width, $height, 0, 0); 
} 
$image->destroy(); 
$this->image = $canvas; 
} 
else 
{ 
$this->image->cropImage($width, $height, $x, $y); 
} 
} 
/* 
* 更改图像大小 
$fit: 适应大小方式 
'force': 把图片强制变形成 $width X $height 大小 
'scale': 按比例在安全框 $width X $height 内缩放图片, 输出缩放后图像大小 不完全等于 $width X $height 
'scale_fill': 按比例在安全框 $width X $height 内缩放图片,安全框内没有像素的地方填充色, 使用此参数时可设置背景填充色 $bg_color = array(255,255,255)(红,绿,蓝, 透明度) 透明度(0不透明-127完全透明)) 
其它: 智能模能 缩放图像并载取图像的中间部分 $width X $height 像素大小 
$fit = 'force','scale','scale_fill' 时: 输出完整图像 
$fit = 图像方位值 时, 输出指定位置部分图像 
字母与图像的对应关系如下: 
north_west north north_east 
west center east 
south_west south south_east 
*/ 
public function resize_to($width = 100, $height = 100, $fit = 'center', $fill_color = array(255,255,255,0) ) 
{ 
switch($fit) 
{ 
case 'force': 
if($this->type=='gif') 
{ 
$image = $this->image; 
$canvas = new Imagick(); 
$images = $image->coalesceImages(); 
foreach($images as $frame){ 
$img = new Imagick(); 
$img->readImageBlob($frame); 
$img->thumbnailImage( $width, $height, false ); 
$canvas->addImage( $img ); 
$canvas->setImageDelay( $img->getImageDelay() ); 
} 
$image->destroy(); 
$this->image = $canvas; 
} 
else 
{ 
$this->image->thumbnailImage( $width, $height, false ); 
} 
break; 
case 'scale': 
if($this->type=='gif') 
{ 
$image = $this->image; 
$images = $image->coalesceImages(); 
$canvas = new Imagick(); 
foreach($images as $frame){ 
$img = new Imagick(); 
$img->readImageBlob($frame); 
$img->thumbnailImage( $width, $height, true ); 
$canvas->addImage( $img ); 
$canvas->setImageDelay( $img->getImageDelay() ); 
} 
$image->destroy(); 
$this->image = $canvas; 
} 
else 
{ 
$this->image->thumbnailImage( $width, $height, true ); 
} 
break; 
case 'scale_fill': 
$size = $this->image->getImagePage(); 
$src_width = $size['width']; 
$src_height = $size['height']; 
$x = 0; 
$y = 0; 
$dst_width = $width; 
$dst_height = $height; 
if($src_width*$height > $src_height*$width) 
{ 
$dst_height = intval($width*$src_height/$src_width); 
$y = intval( ($height-$dst_height)/2 ); 
} 
else 
{ 
$dst_width = intval($height*$src_width/$src_height); 
$x = intval( ($width-$dst_width)/2 ); 
} 
$image = $this->image; 
$canvas = new Imagick(); 
$color = 'rgba('.$fill_color[0].','.$fill_color[1].','.$fill_color[2].','.$fill_color[3].')'; 
if($this->type=='gif') 
{ 
$images = $image->coalesceImages(); 
foreach($images as $frame) 
{ 
$frame->thumbnailImage( $width, $height, true ); 
$draw = new ImagickDraw(); 
$draw->composite($frame->getImageCompose(), $x, $y, $dst_width, $dst_height, $frame); 
$img = new Imagick(); 
$img->newImage($width, $height, $color, 'gif'); 
$img->drawImage($draw); 
$canvas->addImage( $img ); 
$canvas->setImageDelay( $img->getImageDelay() ); 
$canvas->setImagePage($width, $height, 0, 0); 
} 
} 
else 
{ 
$image->thumbnailImage( $width, $height, true ); 
$draw = new ImagickDraw(); 
$draw->composite($image->getImageCompose(), $x, $y, $dst_width, $dst_height, $image); 
$canvas->newImage($width, $height, $color, $this->get_type() ); 
$canvas->drawImage($draw); 
$canvas->setImagePage($width, $height, 0, 0); 
} 
$image->destroy(); 
$this->image = $canvas; 
break; 
default: 
$size = $this->image->getImagePage(); 
$src_width = $size['width']; 
$src_height = $size['height']; 
$crop_x = 0; 
$crop_y = 0; 
$crop_w = $src_width; 
$crop_h = $src_height; 
if($src_width*$height > $src_height*$width) 
{ 
$crop_w = intval($src_height*$width/$height); 
} 
else 
{ 
$crop_h = intval($src_width*$height/$width); 
} 
switch($fit) 
{ 
case 'north_west': 
$crop_x = 0; 
$crop_y = 0; 
break; 
case 'north': 
$crop_x = intval( ($src_width-$crop_w)/2 ); 
$crop_y = 0; 
break; 
case 'north_east': 
$crop_x = $src_width-$crop_w; 
$crop_y = 0; 
break; 
case 'west': 
$crop_x = 0; 
$crop_y = intval( ($src_height-$crop_h)/2 ); 
break; 
case 'center': 
$crop_x = intval( ($src_width-$crop_w)/2 ); 
$crop_y = intval( ($src_height-$crop_h)/2 ); 
break; 
case 'east': 
$crop_x = $src_width-$crop_w; 
$crop_y = intval( ($src_height-$crop_h)/2 ); 
break; 
case 'south_west': 
$crop_x = 0; 
$crop_y = $src_height-$crop_h; 
break; 
case 'south': 
$crop_x = intval( ($src_width-$crop_w)/2 ); 
$crop_y = $src_height-$crop_h; 
break; 
case 'south_east': 
$crop_x = $src_width-$crop_w; 
$crop_y = $src_height-$crop_h; 
break; 
default: 
$crop_x = intval( ($src_width-$crop_w)/2 ); 
$crop_y = intval( ($src_height-$crop_h)/2 ); 
} 
$image = $this->image; 
$canvas = new Imagick(); 
if($this->type=='gif') 
{ 
$images = $image->coalesceImages(); 
foreach($images as $frame){ 
$img = new Imagick(); 
$img->readImageBlob($frame); 
$img->cropImage($crop_w, $crop_h, $crop_x, $crop_y); 
$img->thumbnailImage( $width, $height, true ); 
$canvas->addImage( $img ); 
$canvas->setImageDelay( $img->getImageDelay() ); 
$canvas->setImagePage($width, $height, 0, 0); 
} 
} 
else 
{ 
$image->cropImage($crop_w, $crop_h, $crop_x, $crop_y); 
$image->thumbnailImage( $width, $height, true ); 
$canvas->addImage( $image ); 
$canvas->setImagePage($width, $height, 0, 0); 
} 
$image->destroy(); 
$this->image = $canvas; 
} 
} 


// 添加水印图片 
public function add_watermark($path, $x = 0, $y = 0) 
{ 
$watermark = new Imagick($path); 
$draw = new ImagickDraw(); 
$draw->composite($watermark->getImageCompose(), $x, $y, $watermark->getImageWidth(), $watermark->getimageheight(), $watermark); 
if($this->type=='gif') 
{ 
$image = $this->image; 
$canvas = new Imagick(); 
$images = $image->coalesceImages(); 
foreach($image as $frame) 
{ 
$img = new Imagick(); 
$img->readImageBlob($frame); 
$img->drawImage($draw); 
$canvas->addImage( $img ); 
$canvas->setImageDelay( $img->getImageDelay() ); 
} 
$image->destroy(); 
$this->image = $canvas; 
} 
else 
{ 
$this->image->drawImage($draw); 
} 
} 

// 添加水印文字 
public function add_text($text, $x = 0 , $y = 0, $angle=0, $style=array()) 
{ 
$draw = new ImagickDraw(); 
if(isset($style['font'])) $draw->setFont($style['font']); 
if(isset($style['font_size'])) $draw->setFontSize($style['font_size']); 
if(isset($style['fill_color'])) $draw->setFillColor($style['fill_color']); 
if(isset($style['under_color'])) $draw->setTextUnderColor($style['under_color']); 
if($this->type=='gif') 
{ 
foreach($this->image as $frame) 
{ 
$frame->annotateImage($draw, $x, $y, $angle, $text); 
} 
} 
else 
{ 
$this->image->annotateImage($draw, $x, $y, $angle, $text); 
} 
} 

// 保存到指定路径 
public function save_to( $path ) 
{ 
if($this->type=='gif') 
{ 
$this->image->writeImages($path, true); 
} 
else 
{ 
$this->image->writeImage($path); 
} 
} 
// 输出图像 
public function output($header = true) 
{ 
if($header) header('Content-type: '.$this->type); 
echo $this->image->getImagesBlob(); 
} 

public function get_width() 
{ 
$size = $this->image->getImagePage(); 
return $size['width']; 
} 
public function get_height() 
{ 
$size = $this->image->getImagePage(); 
return $size['height']; 
} 
// 设置图像类型, 默认与源类型一致 
public function set_type( $type='png' ) 
{ 
$this->type = $type; 
$this->image->setImageFormat( $type ); 
} 
// 获取源图像类型 
public function get_type() 
{ 
return $this->type; 
} 

// 当前对象是否为图片 
public function is_image() 
{ 
if( $this->image ) 
return true; 
else 
return false; 
} 

public function thumbnail($width = 100, $height = 100, $fit = true){ $this->image->thumbnailImage( $width, $height, $fit );} // 生成缩略图 $fit为真时将保持比例并在安全框 $width X $height 内生成缩略图片 
/* 
添加一个边框 
$width: 左右边框宽度 
$height: 上下边框宽度 
$color: 颜色: RGB 颜色 'rgb(255,0,0)' 或 16进制颜色 '#FF0000' 或颜色单词 'white'/'red'... 
*/ 
public function border($width, $height, $color='rgb(220, 220, 220)') 
{ 
$color=new ImagickPixel(); 
$color->setColor($color); 
$this->image->borderImage($color, $width, $height); 
} 
public function blur($radius, $sigma){$this->image->blurImage($radius, $sigma);} // 模糊 
public function gaussian_blur($radius, $sigma){$this->image->gaussianBlurImage($radius, $sigma);} // 高斯模糊 
public function motion_blur($radius, $sigma, $angle){$this->image->motionBlurImage($radius, $sigma, $angle);} // 运动模糊 
public function radial_blur($radius){$this->image->radialBlurImage($radius);} // 径向模糊 
public function add_noise($type=null){$this->image->addNoiseImage($type==null&#63;imagick::NOISE_IMPULSE:$type);} // 添加噪点 
public function level($black_point, $gamma, $white_point){$this->image->levelImage($black_point, $gamma, $white_point);} // 调整色阶 
public function modulate($brightness, $saturation, $hue){$this->image->modulateImage($brightness, $saturation, $hue);} // 调整亮度、饱和度、色调 
public function charcoal($radius, $sigma){$this->image->charcoalImage($radius, $sigma);} // 素描 
public function oil_paint($radius){$this->image->oilPaintImage($radius);} // 油画效果 
public function flop(){$this->image->flopImage();} // 水平翻转 
public function flip(){$this->image->flipImage();} // 垂直翻转 
}
Salin selepas log masuk

您可能感兴趣的文章:

  • PHP使用imagick读取PDF生成png缩略图的两种方法
  • php使用imagick模块实现图片缩放、裁剪、压缩示例
  • PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
  • PHP中使用Imagick读取pdf并生成png缩略图实例
  • PHP中使用imagick生成PSD文件缩略图教程
  • PHP利用imagick生成组合缩略图
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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Bagaimana untuk melumpuhkan pratonton lakaran kecil bar tugas dalam Win11 Matikan teknik lakaran kecil paparan ikon bar tugas dengan menggerakkan tetikus Bagaimana untuk melumpuhkan pratonton lakaran kecil bar tugas dalam Win11 Matikan teknik lakaran kecil paparan ikon bar tugas dengan menggerakkan tetikus Feb 29, 2024 pm 03:20 PM

Artikel ini akan memperkenalkan cara untuk mematikan fungsi lakaran kenit yang dipaparkan apabila tetikus menggerakkan ikon bar tugas dalam sistem Win11. Ciri ini dihidupkan secara lalai dan memaparkan lakaran kecil tetingkap semasa aplikasi apabila pengguna menuding tetikus pada ikon aplikasi pada bar tugas. Walau bagaimanapun, sesetengah pengguna mungkin mendapati ciri ini kurang berguna atau mengganggu pengalaman mereka dan ingin mematikannya. Lakaran kecil bar tugas boleh menjadi menyeronokkan, tetapi ia juga boleh mengganggu atau menjengkelkan. Memandangkan kekerapan anda menuding di atas kawasan ini, anda mungkin telah menutup tetingkap penting secara tidak sengaja beberapa kali. Kelemahan lain ialah ia menggunakan lebih banyak sumber sistem, jadi jika anda telah mencari cara untuk menjadi lebih cekap sumber, kami akan menunjukkan kepada anda cara untuk melumpuhkannya. tetapi

Bagaimana untuk menambah tera air pada Meitu Xiuxiu? Kongsi cara menambah tera air pada foto yang cantik! Bagaimana untuk menambah tera air pada Meitu Xiuxiu? Kongsi cara menambah tera air pada foto yang cantik! Mar 16, 2024 pm 09:55 PM

Ingin tahu cara menambah tera air pada MeituXiuXiu? Meitu Xiuxiu ialah perisian penyuntingan foto yang sangat mudah digunakan Ia menyediakan fungsi seperti memotong gambar dan meletakkannya pada gambar lain, menukar saiz gambar mengikut kb, mengalih keluar tera air, menukar warna latar belakang foto ID, dan menambah masa. , tera air tarikh dan lokasi ke skrin penuh Bantu pengguna menyelesaikan pengeluaran gambar dengan cepat. Sesetengah pengguna telah mencipta gambar mereka sendiri dan tidak mahu orang lain mencurinya. Mereka mahu menutupnya dengan tera air mereka sendiri, tetapi mereka tidak tahu cara melakukannya? Editor kini akan berkongsi dengan anda cara menambah tera air pada gambar yang cantik! Jika anda suka, datang dan muat turunnya! 1. Bagaimana untuk menambah tera air pada Meitu Xiuxiu? Kongsi cara menambah tera air pada foto yang cantik! 1. Buka versi 2023 Meitu Xiu Xiu yang dimuat turun dari tapak ini. Versi Meitu Xiu Xiu 2023 Kategori: Penggambaran dan pengindahan Muat Turun Meitu Xiu Xiu 2023 versi ialah perisian pengindahan dan pengeditan gambar yang kaya dengan ciri

Bagaimana untuk membuang tera air dengan Pengimbas Yang Maha Kuasa Bagaimana untuk membuang tera air dengan Pengimbas Yang Maha Kuasa Mar 05, 2024 pm 05:34 PM

Mengalih keluar tera air ialah alat yang berguna dalam Pengimbas perisian Sesetengah pengguna tidak pasti cara mengalih keluar tera air dalam Pengimbas Anda boleh mengklik Alih Keluar Tera Air dalam Edit PDF pada antara muka simpan. Seterusnya, editor akan menerangkan Pengguna membawakan pengenalan kepada kami bagaimana untuk membuang tera air Jika anda berminat, datang dan lihat! Tutorial penggunaan Scanner King Bagaimana untuk membuang tera air dengan Scanner King Jawapan: Anda boleh klik pada antara muka simpan untuk mengedit penyingkiran tera air dalam PDF: 1. Masukkan perisian dan klik ikon [Kamera]. 2. Ambil gambar dan imbas dokumen yang perlu ditanda air. 3. Klik [→] untuk meneruskan ke langkah seterusnya. 4. Selepas selesai menyunting, klik [✓]. 5. Klik [Edit PDF]. 6. Pilih [Remove Watermark] di bawah.

Bagaimanakah cara saya memangkas IFrame dalam HTML? Bagaimanakah cara saya memangkas IFrame dalam HTML? Aug 29, 2023 pm 04:33 PM

Bingkai sebaris dipanggil iframe dalam HTML. Label menentukan kawasan segi empat tepat dalam kandungan di mana penyemak imbas boleh memaparkan dokumen yang berbeza dengan bar skrol dan sempadan. Untuk membenamkan dokumen lain dalam dokumen HTML semasa, gunakan bingkai sebaris. Rujukan kepada elemen boleh ditentukan menggunakan atribut nama HTMLiframe. Dalam JavaScript, rujukan kepada elemen juga dibuat menggunakan atribut nama. Iframe pada asasnya digunakan untuk memaparkan halaman web dalam halaman web yang sedang dipaparkan. URL dokumen yang mengandungi iframe ditentukan menggunakan atribut "src". Sintaks Berikut ialah sintaks HTML <iframesrc="URL"title="d

Bagaimana untuk membuang tera air daripada keratan Bagaimana untuk membuang tera air daripada keratan Bagaimana untuk membuang tera air daripada keratan Bagaimana untuk membuang tera air daripada keratan Feb 22, 2024 pm 05:16 PM

Buka klip dan pilih templat Selepas mengedit video, klik Eksport, klik Simpan dan kongsi tanpa tera air. Model tutorial yang berkenaan: iPhone13 Sistem: iOS15.3.1 Versi: Cutting 6.8.0 Analysis 1 Open Cutting dan pilih templat pemotongan. 2. Selepas mengklik untuk membuka templat, klik pilihan potong gaya yang sama di sudut kanan bawah. 3Pilih segmen isian foto daripada album dan klik Seterusnya. 4Cara mengklik pilihan eksport di penjuru kanan sebelah atas halaman. 5Akhir sekali, klik Simpan dan Kongsi tanpa tera air. Tambahan: Apakah jenis perisian Cutting? 1 Cutting ialah perisian penyuntingan video yang mempunyai fungsi penyuntingan yang komprehensif, boleh menukar kelajuan, mempunyai penapis dan kesan kecantikan, dan mempunyai sumber perpustakaan muzik yang kaya. Mulai Februari 2021, keratan akan disokong pada telefon mudah alih, Pad dan komputer Mac.

Bagaimana untuk membuang tera air video dalam Wink Bagaimana untuk membuang tera air video dalam Wink Feb 23, 2024 pm 07:22 PM

Bagaimana untuk membuang tera air daripada video dalam Wink? Terdapat alat untuk membuang tera air daripada video dalam winkAPP, tetapi kebanyakan rakan tidak tahu bagaimana untuk membuang tera air daripada video dalam Wink dibawa oleh editor Teks tutorial, pengguna yang berminat datang dan lihat! Cara membuang tera air video dalam Wink 1. Buka APP wink dahulu dan pilih fungsi [Remove Watermark] di kawasan halaman utama 2. Kemudian pilih video yang ingin anda keluarkan watermark dalam album 3. Kemudian pilih video dan klik sudut kanan atas selepas mengedit video [√];4 Akhir sekali, klik [Pencetakan satu klik] seperti yang ditunjukkan dalam rajah di bawah dan kemudian klik [Proses].

Bagaimana untuk membuang tera air pada Xiaomi Mi 14Ultra? Bagaimana untuk membuang tera air pada Xiaomi Mi 14Ultra? Feb 28, 2024 pm 02:28 PM

Xiaomi Mi 14 Ultra ialah model baharu dengan prestasi dan konfigurasi yang sangat baik Telefon bimbit ini juga menggunakan reka bentuk penampilan yang lebih tinggi dan sangat dikenali ramai pengguna yang ingin membelinya 14 Ultra. , editor laman web ini akan memperkenalkannya kepada anda di bawah! Bagaimana untuk membuang tera air dari Xiaomi 14Ultra? 1. Buka aplikasi kamera: Cari dan buka aplikasi kamera prapasang pada Xiaomi 14. 2. Masukkan menu Tetapan: Ketik sudut kanan bawah atau sudut kiri bawah skrin (bergantung pada versi yang anda gunakan) untuk memaparkan butang Pilihan Tambahan. Kemudian, pilih "Tetapan" dalam menu pop timbul. 3. Matikan pilihan tera air: Dalam menu tetapan, anda akan melihat pelbagai pilihan dan parameter. Tatal ke bawah sehingga anda menemui pilihan "Watermark".

Bagaimana untuk menetapkan tera air foto pada Xiaomi Mi 14? Bagaimana untuk menetapkan tera air foto pada Xiaomi Mi 14? Mar 18, 2024 am 11:00 AM

Untuk menjadikan foto yang diambil lebih diperibadikan dan unik, Xiaomi Mi 14 menyediakan tetapan tera air foto. Dengan menetapkan tera air foto, pengguna boleh menambah corak, teks dan logo pada foto yang mereka ambil, supaya setiap foto boleh merakam momen dan kenangan berharga dengan lebih baik. Seterusnya, kami akan memperkenalkan cara untuk menetapkan tera air foto dalam Xiaomi 14 untuk menjadikan foto anda lebih diperibadikan dan jelas. Bagaimana untuk menetapkan tera air foto pada Xiaomi Mi 14? 1. Mula-mula klik "Kamera". 2. Kemudian klik "Tetapan". 3. Kemudian cari tera air, dan kemudian anda boleh mula merakam.

See all articles