乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用Python給圖片添加水印

       hercules028 2022-07-13 發(fā)布于四川
      本文介紹如何使用Python給圖像添加水?。ㄎ谋净驁D片)。前面,我們已經(jīng)學(xué)習(xí)了:
      使用Python批量給圖片添加文本
      這里,嘗試給圖片添加Logo和文本。
      這里需要使用Pillow庫(Python Imaging Library),使用pip命令安裝:
      pip install Pillow
      注意,要導(dǎo)入Pillow庫,需要使用:
      import PIL
      而不是:
      import Pillow
      準(zhǔn)備水印圖片(logo
      向圖像中添加水印,基本上是將一張圖像(水?。┓胖迷诹硪粡垐D像的頂部。能夠控制logo圖像的透明度將有助于使最終生成的圖像看起來更好。因此,最好使用支持圖像透明度的PNG文件格式的水印圖像。
      如果水印文件是JPG/JPEG格式,不要擔(dān)心。我們也不會使用一些轉(zhuǎn)換器將JPG轉(zhuǎn)換為PNG。Python可以為圖像添加所需的透明度
      雖然PNG文件和JPG文件之間有一些不同,但我們主要關(guān)注的是圖像的透明度特征。圖像透明度基本上是指圖像是否可以透過。
      讓我們將兩個圖像文件加載到Python中。這是相同的圖像,但格式不同,一個是PNG,另一個是JPG。讓我們看看這兩個圖像文件之間的差異。
      Image
      1
      對于計算機來說,圖像文件基本上是一組數(shù)字。將這兩個圖像文件加載到NumPy數(shù)組將有助于可視化這個概念。
      示例PNGJPG圖像的大小均為1100 x 1100像素。然而,shape屬性中的最后一個數(shù)字不同:JPG3,而PNG4。讓我們顯示numpy數(shù)組以查看差異。
      每個數(shù)組內(nèi)的值表示每個像素的顏色。例如,在PNG文件中,[255,255,255,255]表示白色但完全不透明。而在JPG文件中,[255,255,255]表示白色的像素。
      Image
      2
      前三個整數(shù)值(如上圖2左側(cè)所示)是RGB(紅色、綠色和藍色)值,PNG數(shù)組中的第四個整數(shù)稱為“alpha通道,它控制透明度(因此命名為“RGBA”)。如上圖2所示,PNG支持透明度(即alpha通道),但JPG沒有。
      這里需要注意:
      1.RGB的值為255表示每種顏色的最大值。將所有三個值設(shè)為最大值(255,255,255)基本上是白色。
      2.alpha通道的值為255表示不透明;而alpha值為0表示完全透明。
      Pillow庫使JPG文件轉(zhuǎn)換為PNG格式變得非常容易。我們可以使用putalpha()方法將alpha通道(即第四個整數(shù))添加到JPG圖像。注意,參數(shù)內(nèi)部的范圍可以是0255。值為0表示完全透明,即我們不會看到任何東西;255表示不透明。這里選擇了數(shù)值180,這樣我們的水印圖像將有點半透明。
      Image
      3
      此時圖片的像素數(shù)組值如下圖4所示。
      Image
      4
      這張圖片還有一個問題——它的背景是白色的。通常,PNG文件的背景是透明的。我們可以通過將圖像上所有白色像素的alpha通道設(shè)置為0(透明)來刪除白色背景。
      換句話說,對于每個RGB值為[255,255,255,180]的像素,我們將alpha通道設(shè)置為0,以使像素完全透明。
      由于我們已經(jīng)將圖像的RGBA值放入Numpy數(shù)組中,因此操縱顏色很容易。為了找到所有白色的像素,可以創(chuàng)建一個掩碼,其中白色像素=True,否則為False。下面的代碼檢查圖像的每個像素的所有R、GB值是否等于255。注意,transparent_watermark[:,:,0]僅返回所有1100×1100像素的第一個元素(即“R”的整數(shù)值)的數(shù)組。
      然后,我們?yōu)闈M足標(biāo)準(zhǔn)的像素賦新值[255,255,255,0]。這一步有效地將所有白色像素變?yōu)橥耆该鳌?/span>
      Image
      5
      可以使用PIL庫的Image.fromarray()方法將NumPy數(shù)組轉(zhuǎn)換回圖像文件。
      watermark_final = Image.fromarray(transparent_watermark)
      使用Python給圖片文件添加水印
      現(xiàn)在,我們已經(jīng)完成了準(zhǔn)備Logo圖像,是時候?qū)⑵渥鳛樗√砑拥交A(chǔ)圖像中了。我們首先將水印圖像的大小調(diào)整為基礎(chǔ)圖像的1/5,當(dāng)然也可以使用另一種適合你需要的大小。
      Image
      6
      然后,將創(chuàng)建一個與基礎(chǔ)圖像大小相同的空“畫布”,并將此畫布設(shè)置為處處透明。
      transparent = Image.new(mode='RGBA',size = (width,height), color=0)
      設(shè)置畫布后,將1)粘貼基礎(chǔ)圖像,2)將水印圖像粘貼在基礎(chǔ)圖像的頂部。如下所示,Image.paste()方法有三個參數(shù):
      1.im–源圖像
      2.box–粘貼圖像的起點(左上角)的(xy)坐標(biāo)
      3.mask-遮罩/過濾器,有助于從粘貼的圖像中去除所有透明像素
      transparent.paste(img)
      wm_position = (int(3/4*width), int(3/4 * height))
      transparent.paste(im=watermark_final, box=wm_position, mask=watermark_final)
      現(xiàn)在,已經(jīng)成功地將一張JPG格式的水印添加到另一張圖片上,如下圖7所示。
      Image
      7
      注:本文學(xué)習(xí)整理自pythoninoffice.com,供有興趣的朋友學(xué)習(xí)參考。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多