回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在学习Python和Django。</p>
<p>用户使用forms.ImageField()提供图像。然后我必须处理它,以便创建两个不同大小的图像。</p>
<p>当我提交表单时,Django返回以下错误:</p>
<pre><code>IOError at /add_event/
cannot identify image file
</code></pre>
<p>我调用resize函数:</p>
<pre><code>def create_event(owner_id, name, image):
image_thumb = image_resizer(image, name, '_t', 'events', 180, 120)
image_medium = image_resizer(image, name, '_m', 'events', 300, 200)
</code></pre>
<p>第二次调用图像调整器时出错:</p>
<pre><code>def image_resizer(image, name, size, app_name, length, height):
im = Image.open(image)
if im.mode != "RGB":
im = im.convert("RGB")
im = create_thumb(im, length, height)
posit = str(MEDIA_ROOT)+'/'+app_name+'/'
image_2 = im
image_name = name + size +'.jpg'
imageurl = posit + image_name
image_2.save(imageurl,'JPEG',quality=80)
url_image='/'+app_name+'/'+image_name
return url_image
</code></pre>
<p>版本:<br/>
Django 1.3.1<br/>
Python 2.7.1<br/>
第1.1.7页</p>
<p>我想找出问题所在,但我不知道该怎么办。提前谢谢你!</p>
<p><strong>编辑</strong><br/>
我解决了重写函数的问题;现在它批量创建不同的图像:</p>
<p>我调用resize函数:</p>
<pre><code>url_array = image_resizer.resize_batch(image, image_name, [[180,120,'_t'], [300,200,'_m']], '/events/')
</code></pre>
<p>所以:</p>
<pre><code>image_thumb = url_array[0]
image_medium = url_array[1]
</code></pre>
<p>以及resize函数:</p>
<pre><code>def resize_batch(image, name, size_array, position):
im = Image.open(image)
if im.mode != "RGB":
im = im.convert("RGB")
url_array = []
for size in size_array:
new_im = create_thumb(im, size[0], size[1])
posit = str(MEDIA_ROOT) + position
image_name = name + size[2] +'.jpg'
imageurl = posit + image_name
new_im.save(imageurl,'JPEG',quality=90)
new_url_array = position + image_name
url_array.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(new_url_array)
return url_array
</code></pre>
<p>谢谢大家!</p>