質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1609閲覧

【Python】画像DL時の「Content-typeの設定」

t-_.

総合スコア55

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/04 13:14

前提・実現したいこと

以下のコードで画像をダウンロードすると、PILとかcv2とかで読み込めないファイルがありました。
(urlの2、4、5コメが読み込めない)
原因?を調べてみると、content-typeが「image/vnd.ms-photo」になっていて、対応してない。と考察しました。

私の目的は、jpg,pngでダウンロードしたいです。
よろしくお願いいたします。

JPEG-XR
image/vnd.ms-photo

該当のソースコード

Python

1url = ['https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-エンシェントトラベルスタンプtシャツ-プレタポルテ(洋服)--FLTS93HY7231_PM2_Front%20view.png', 'https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-エンシェントトラベルスタンプtシャツ-プレタポルテ(洋服)--FLTS93HY7231_PM1_Worn%20view.jpg', 'https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-エンシェントトラベルスタンプtシャツ-プレタポルテ(洋服)--FLTS93HY7231_PM1_Closeup%20view.jpg', 'https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-エンシェントトラベルスタンプtシャツ-プレタポルテ(洋服)--FLTS93HY7231_PM1_Side%20view.jpg', 'https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-エンシェントトラベルスタンプtシャツ-プレタポルテ(洋服)--FLTS93HY7231_PM1_Detail%20view.jpg'] 2dest_path = "_test_" 3download_img( url, dest_path ) 4 5def download_img( url, dest_path ): 6 extesiton = ".png" 7 if "jpg" in url: 8 extesiton = ".jpg" 9 url = urllib.parse.quote( url, safe=':/%20' ) 10 #headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134', 'Referer': 'https://jp.louisvuitton.com/' } 11 req = urllib.request.Request( url ) 12 req.add_header( "User-Agent", 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134' ) 13 req.add_header( "Referer", "https://jp.louisvuitton.com/" ) 14 #req.add_header( "Content-Type", "image/png" )#これをするとDLできなくなる(動かなくなる 15 16 response = urllib.request.urlopen( req, timeout=10 ) 17 print( 'Content-Type:', response.info()['Content-Type'] ) 18 19 response = response.read() 20 with open( "louis_img\" + dest_path + extesiton, mode = "wb" ) as f: 21 f.write( response )

試したこと

headerでcontent-typeを指定したりしましたが、動かなくなりました。
変換ソフトなどで試したところ、読み込めないのがほとんど。
jxrはほぼ対応してなさそう。。。

補足情報(FW/ツールのバージョンなど)

python 3.8.*

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

バイナリでPILで変換してできた。
Image.open( io.BytesIO( response ) )

投稿2021/08/04 19:37

t-_.

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問