3

これは私の「画像貼り付け」プログラムで、1 つの画像 (ここでは製品という名前) を取り、別の画像 (ここでは背景という名前) に貼り付けるように設計されています。以前は、プログラムにコンピューターから画像を取得させるだけでした。しかし、URL から取得できる別の機能を追加することにしました。コンピューターの部分はまだうまく機能します。

from PIL import Image, ImageFilter
import urllib.request,io
print("ALL IMAGES MUST BE PNG FORMAT")
ext=input("Get Image From Computer or Internet?(c or i)")
if ext == "c":
    path = input("Background Image Path: ")
    fpath = input("Image Path: ")
if ext == "i":
    url = input("Background URL: ")
    furl = input("Image URL: ")
    path = io.StringIO(urllib.request.urlopen(url).read())
    fpath = io.StringIO(urllib.request.urlopen(furl).read())
background = Image.open(path)
product = Image.open(fpath)
x,y=background.size
x2,y2=product.size
xmid,ymid=x/2-(x2/2),y/2-(y2/2)
a=int(xmid)
b=int(ymid)
background.paste(product,(a,b),product)
background.show()
print(a,b)

私がそれを実行すると:

ALL IMAGES MUST BE PNG FORMAT
Get Image From Computer or Internet?(c or i)i
Background URL: https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcS6pIlao0o52_Sh2n_PLQ53jsI__QDgFxFOQK-WU-TFl0F3XtIm6Q
Image URL: http://3.bp.blogspot.com/-5s8rne3WJuQ/UPTjBcGoBPI/AAAAAAAAA0o/PPxdbY8ZvB4/s1600/44+baixar+download+the+amazing+spider+man+apk+gratis.png
Traceback (most recent call last):
  File "/Users/William/Documents/Science/PYTHON/Image Pasting.py", line 12, in <module>
    path = io.StringIO(urllib.request.urlopen(url).read())
TypeError: initial_value must be str or None, not bytes

プログラムのその部分は Python 2 スクリプトから取得しましたが、変換しようとしたので、エラーは私の表記にあると確信しています。

4

1 に答える 1

7

間違っTypeErrorた IO クラスを使用していることを示すのに十分なはずです。変化する:

path = io.StringIO(urllib.request.urlopen(url).read())
fpath = io.StringIO(urllib.request.urlopen(furl).read())

path = io.BytesIO(urllib.request.urlopen(url).read())
fpath = io.BytesIO(urllib.request.urlopen(furl).read())

そして、これはあなたのために働くはずです。

于 2014-01-02T04:20:14.033 に答える