Apa yang saya coba lakukan cukup sederhana ketika kita berurusan dengan file lokal, tetapi masalahnya muncul ketika saya mencoba melakukan ini dengan URL jarak jauh.
Pada dasarnya, saya mencoba membuat objek gambar PIL dari file yang ditarik dari URL. Tentu, saya selalu bisa mengambil URL dan menyimpannya dalam file temp, lalu membukanya menjadi objek gambar, tetapi rasanya sangat tidak efisien.
Inilah yang saya miliki:
Image.open(urlopen(url))
Itu mengeluhkan keluhan yang seek()
tidak tersedia, jadi saya mencoba ini:
Image.open(urlopen(url).read())
Tapi itu juga tidak berhasil. Apakah ada Cara yang Lebih Baik untuk melakukan ini, atau menulis ke file sementara cara yang diterima untuk melakukan hal semacam ini?
python
python-imaging-library
Daniel Quinn
sumber
sumber
Jawaban:
Dalam Python3 modul StringIO dan cStringIO hilang.
Di Python3 Anda harus menggunakan:
sumber
requests
Paket melempar 503 kode status sambil mengambil gambar dari URL. Sebagai gantinya, saya harus resorhttp.client
untuk mendapatkan gambar.Image.open(response.raw)
. PIL secara otomatis memeriksa itu sekarang dan apakah pembungkus BytesIO di bawah tenda. Dari: pillow.readthedocs.io/en/3.0.x/releasenotes/2.8.0.htmlAnda bisa mencoba menggunakan StringIO
sumber
Saya menggunakan perpustakaan permintaan. Tampaknya lebih kuat.
sumber
pip3.4 install pillow
.Bagi Anda yang menggunakan Bantal, dari versi 2.8.0 Anda dapat:
atau jika Anda menggunakan
requests
:Referensi:
sumber
Gunakan
StringIO
untuk mengubah string baca menjadi objek seperti file:sumber
Bagi mereka yang melakukan pemrosesan post sklearn / numpy (mis. Deep learning) Anda dapat membungkus objek PIL dengan np.array (). Ini mungkin menyelamatkan Anda dari keharusan ke Google seperti yang saya lakukan:
sumber
Python 3
Jupyter Notebook dan IPython
Tidak seperti metode lain, metode ini juga berfungsi dalam for for!
sumber
Cara yang disarankan untuk melakukan input / output gambar hari ini adalah dengan menggunakan paket khusus ImageIO . Data gambar dapat dibaca langsung dari URL dengan satu baris kode sederhana:
Banyak jawaban di halaman ini sebelum rilis paket itu dan karenanya tidak menyebutkannya. ImageIO dimulai sebagai komponen dari toolkit Scikit-Image . Ini mendukung sejumlah format ilmiah di atas yang disediakan oleh perpustakaan pemrosesan gambar PILlow yang populer . Itu membungkus semuanya dalam API bersih hanya berfokus pada input / output gambar. Faktanya, SciPy menghapus image reader / writer-nya sendiri demi ImageIO .
sumber
pilih gambar dalam chrome, klik kanan padanya, klik
Copy image address
, tempel kestr
variabel (my_url
) untuk membaca gambar:Buka;
sumber