Cara menggunakan tiff to png python

Hi Alameer Ali,

Just changing the file extension from “tif” to “png” isn’t going to
change the file from a TIF file to a PNG file. Unless the files are
actually PNG files that have been misnamed with tif somehow, all you
will do is confuse people and possibly prevent the files from being
opened or edited.

(Some image processing software is smart enough to ignore the file
extension but others will be very confused by the wrong file extension.)

Does something like this help?

# Untested.
import os
for dir, subdirs, files in os.walk("."):
    for filename in files:
        base, ext = os.path.splitext(filename)
        if ext.lower() == '.tif':
            src = os.path.join(dir, filename)
            dest = os.path.join(dir, base + '.png')
            if not os.path.exists(dest):
                os.rename(src, dest)

PIL adalah library open-source tambahan untuk Python yang fungsi utamanya adalah memanipulasi file gambar. PIL diciptakan oleh Fredrik Lundh pada tahun 1995, dan pengembangannya dihentikan pada tahun 2011. PIL di-fork dan diteruskan oleh library Pillow.

Pillow mendukung banyak format file populer, misalnya PNG, JPG/JPEG, TIFF, dan BMP. Jika perlu, Pillow dan Python mendukung library decoder tambahan. Tipe manipulasi antara lain masking, filtering, enhancement, menambahkan teks, manipulasi per pixel, dan lain-lain.

Persiapan Environment

Siapkan dan gunakan venv khusus yang masih bersih (saran) dengan

from PIL import Image
0. Install Pillow menggunakan
from PIL import Image
1

pip install Pillow

(Pillow tidak dapat dipasang di env yang sama dengan PIL.)

Output:

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2

Untuk mengimpor Pillow:

from PIL import Image

Perhatikan bahwa keyword untuk nama modulnya adalah PIL, bukan Pillow untuk alasan backward compatibility. Kita akan menggunakan kelas

from PIL import Image
2 di latihan ini.

Note: untuk linux, install lib yang dibutuhkan di sistem:

sudo apt install libjpeg-dev zlib1g-dev

Gambar untuk Latihan

Boleh apa saja, yang penting berukuran kecil supaya tidak menyebabkan lambat dan no profanity, please... Btw, ini gambar Lena Forsén:

Cara menggunakan tiff to png python

Semua instruksi di bawah bisa dikerjakan dalam satu file python. Run dengan cara:

python nama_file.py

Membuka dan Menyimpan Gambar

Metode

from PIL import Image
3 pada latihan ini cukup sederhana. Lihat screenshot kode di bawah.

Metode

from PIL import Image
4 digunakan untuk menampilkan file dengan program yang disediakan OS. Metode ini dapat menimbulkan error jika sistem tidak mendukung.

Pada saat menyimpan gambar menggunakan

from PIL import Image
5, kita bisa mengubah formatnya dengan cara menyebutkan nama file lengkap dengan ekstensi atau secara eksplisit:

image_object.save(fp, format=None, **params)

dimana

  • from PIL import Image
    
    6: instansi dari Image, sesuaikan namanya
  • from PIL import Image
    
    7: nama file (string), pathlib.Path, obyek file
  • from PIL import Image
    
    8: (opsional) ekstensi, misal
    from PIL import Image
    
    9
  • sudo apt install libjpeg-dev zlib1g-dev
    
    0: kwargs opsional, tidak dijelaskan di sini

Cara menggunakan tiff to png python

Atribut Gambar

Ada beberapa atribut dari obyek gambar yang bisa digunakan untuk mengetahui info tentang obyek gambar itu:

  • sudo apt install libjpeg-dev zlib1g-dev
    
    1: nama atau path file, misal
    sudo apt install libjpeg-dev zlib1g-dev
    
    2
  • from PIL import Image
    
    8: mengembalikan format gambar, misal
    sudo apt install libjpeg-dev zlib1g-dev
    
    4
  • sudo apt install libjpeg-dev zlib1g-dev
    
    5: format pixel, misal
    sudo apt install libjpeg-dev zlib1g-dev
    
    6 atau
    sudo apt install libjpeg-dev zlib1g-dev
    
    7
  • sudo apt install libjpeg-dev zlib1g-dev
    
    8: tuple dua elemen dimensi gambar, lebar x tinggi, misal
    sudo apt install libjpeg-dev zlib1g-dev
    
    9
  • python nama_file.py
    
    0 dan
    python nama_file.py
    
    1
  • python nama_file.py
    
    2: info tambahan, misal dpi

Contoh pemanggilan atribut (menggunakan Python interpreter di terminal Linux):

>>> img.filename
'cow.jpg'
>>> img.size
(1280, 720)

Mengubah Dimensi Gambar (Resize)

Untuk mengubah dimensi (lebar x tinggi) gambar, kita bisa menggunakan

python nama_file.py
3 dengan beberapa parameter.

resized_img = image_object.resize(tuple, resample=Image.BICUBIC)
resized_img.save('newfile.gif')

dimana

  • from PIL import Image
    
    6: instansi Image
  • python nama_file.py
    
    5 adalah tuple dimensi gambar lebar x tinggi, misal
    python nama_file.py
    
    6 (perhatikan tanda kurung ya...)
  • python nama_file.py
    
    7: opsional, pilihannya:
    • python nama_file.py
      
      8
    • python nama_file.py
      
      9
    • image_object.save(fp, format=None, **params)
      
      0
    • image_object.save(fp, format=None, **params)
      
      1
    • image_object.save(fp, format=None, **params)
      
      2
    • image_object.save(fp, format=None, **params)
      
      3

Membuat Thumbnail

Operasi ini mirip dengan resize, namun pembuatan thumbnail memperhatikan aspect ratio, sehingga dimensi gambar yang dihasilkan belum tentu sesuai dengan parameter yang kita masukkan. Metodenya adalah

image_object.save(fp, format=None, **params)
4.

image_object.thumbnail((lebar, tinggi))
image_object.save('thumb.gif')

Oiya, apa itu thumbnail? Thumbnail adalah versi gambar dan video yang sudah diseragamkan dimensinya, misalnya ke 256 x 256 pixel. Thumbnail biasanya disimpan bersama gambar/video asli. Tujuan thumbnail antara lain mengurangi bandwidth dan waktu download. Gambar asli hanya ditampilkan jika memang diperlukan.

Update 4 Januari 2022: Mohon maaf metode thumbnail memodifikasi citra secara in-place. Kode di atas sudah saya ubah untuk memperbaiki kesalahan sebelumnya.

Memotong (Cropping) Gambar

Seperti bisa dilihat di bawah, metodenya adalah

image_object.save(fp, format=None, **params)
5.

crop_img = image_object.crop((340, 20, 560, 230))
crop_img.save('cropped.jpg')

Perhatikan, pada sistem koordinat kartesian untuk Pillow, titik

image_object.save(fp, format=None, **params)
6 berada di kiri atas gambar. Sintaksnya adalah

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
0

Untuk kode di atas, ilustrasinya sbb:

Cara menggunakan tiff to png python

Ini akan menghasilkan cropped image dengan dimensi (560 - 340) x (230 - 20) = 220 x 210

Menambahkan Border pada Gambar

Border bisa ditambahkan dengan cara membuat gambar baru. Pada contoh ini, kita akan membuat border dengan tebal 10 pixel, maka gambar yang akan kita buat (dengan latar belakang red) harus 20 pixel lebih besar.

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
1

Memutar (Rotate) Gambar

Kita bisa menggunakan metode

image_object.save(fp, format=None, **params)
7 dengan satu parameter:

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
2

Beberapa parameter rotasi gambar:

  • image_object.save(fp, format=None, **params)
    
    8
  • image_object.save(fp, format=None, **params)
    
    9
  • >>> img.filename
    'cow.jpg'
    >>> img.size
    (1280, 720)
    
    0

Rotasi berlawanan jalan jarum jam. Kalau mau lebih bebas lagi, kita bisa menggunakan

>>> img.filename
'cow.jpg'
>>> img.size
(1280, 720)
1:

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
3

dimana

  • >>> img.filename
    'cow.jpg'
    >>> img.size
    (1280, 720)
    
    2: sudut (berlawanan jalan jarum jam)
  • >>> img.filename
    'cow.jpg'
    >>> img.size
    (1280, 720)
    
    3: jika True, dimensi gambar akan disesuaikan untuk memuat hasil rotasi seutuhnya
  • >>> img.filename
    'cow.jpg'
    >>> img.size
    (1280, 720)
    
    4: pusat rotasi dalam tuple (x, y). Default adalah titik tengah gambar
  • python nama_file.py
    
    7: lihat penjelasan di bagian Resize

Flip

Masih menggunakan metode

image_object.save(fp, format=None, **params)
7:

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
4

Dan tentu saja masih ada flip atas-bawah (axis horizontal):

>>> img.filename
'cow.jpg'
>>> img.size
(1280, 720)
7.

Cara menggunakan tiff to png python

Brightness, Contrast, dan Sharpness

Untuk ketiga tipe manipulasi ini, ada yang disebut faktor 1 (factor of one). Nilai 1 ini adalah gambar asli sebelum manipulasi. Kelas di library Pillow yang akan kita gunakan adalah

>>> img.filename
'cow.jpg'
>>> img.size
(1280, 720)
8.

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
5

Brightness

Untuk faktor: brighter > 1 > darker

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
6

Contrast

Untuk faktor: kontras > 1 > kelabu

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
7

Sharpness

Untuk faktor: tajam > 1 > buram

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
8

Watermark

Kode di bawah adalah untuk menambahkan watermark berupa teks. Untuk latihan, gunakan nomor pokok mahasiswa (NPM) sebagai teks watermark. Pada contoh ini, lokasi watermark adalah di kanan bawah gambar dengan margin 15 pixel agar tulisan tidak terlalu ke tepi.

Penting: font Arial bisa diunduh disini. Taruh file

>>> img.filename
'cow.jpg'
>>> img.size
(1280, 720)
9 di direktori yang sama dengan kode program.

(gambar1) gp@pop-os-3770k:~/Devel/py$ pip install Pillow
Collecting Pillow
  Downloading Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.0 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-8.1.2
9

Gambar dengan watermark:

Cara menggunakan tiff to png python

## Tugas (Detail submisi tugas yang belum ada di sini, saya lampirkan saat/setelah meeting ya) Kerjakan semua demo di atas dalam satu file Python (lebih dari satu boleh kalau mau repot) (jangan lupa sertakan file gambar yang kalian pakai ya...), unggah **dua** file tersebut ke Git, lalu email ke saya. Waktu pengerjaan satu minggu. Gambar input (yang digunakan untuk `open()`) tidak boleh sama dengan di blog ini ya.. Cari gambar lain yang ukurannya <1 MB, kalau bisa dimensinya tidak square. Hal-hal yang harus di demokan di dalam program: 1. Membuka, menyimpan file ke format lain, menampilkan gambar di OS 2. Menampilkan 7 atribut gambar (nama file, ukuran, dsb..) 3. Mengubah ukuran (resize) lalu save 4. Membuat thumbnail lalu save 5. Cropping lalu save 6. Membuat gambar baru dengan border, lalu save 7. Memutar gambar lalu save 8. Membalik gambar (flip) lalu save 9. Memodifikasi brightness, contrast, dan sharpness, lalu save 10. Menambahkan watermark, lalu save