2014-09-04 75 views
2

我正在練習使用scrapy使用自定義imagePipeline裁剪圖像。 我用這code使用自定義scrapy imagePipeline下載圖像並覆蓋現有圖像

class MyImagesPipeline(ImagesPipeline): 

def get_media_requests(self, item, info): 
    for image_url in item['image_urls']: 
     yield Request(image_url) 

def convert_image(self, image, size=None): 
    if image.format == 'PNG' and image.mode == 'RGBA': 
     background = Image.new('RGBA', image.size, (255, 255, 255)) 
     background.paste(image, image) 
     image = background.convert('RGB') 
    elif image.mode != 'RGB': 
     image = image.convert('RGB') 

    if size: 
     image = image.copy() 
     image.thumbnail(size, Image.ANTIALIAS) 
    else: 
     # cut water image TODO use defined image replace Not cut 
     x,y = image.size 
     if(y>120): 
      image = image.crop((0,0,x,y-25)) 

    buf = StringIO() 
    try: 
     image.save(buf, 'JPEG') 
    except Exception, ex: 
     raise ImageException("Cannot process image. Error: %s" % ex) 

    return image, buf 

它運作良好,但有一個問題。
如果文件夾中有原始圖像,則 然後運行蜘蛛,
它下載的圖像將不會替換原來的圖像。

我怎樣才能覆蓋原始圖像?

回答