GVKun编程网logo

Scrapy:使用重命名默认图像名称自定义图像管道

13

本文将分享Scrapy:使用重命名默认图像名称自定义图像管道的详细内容,此外,我们还将为大家带来关于C#导出带有图像的Gridview以在自定义图像大小方面表现出色、Docker重命名镜像名称和TAG

本文将分享Scrapy:使用重命名默认图像名称自定义图像管道的详细内容,此外,我们还将为大家带来关于C# 导出带有图像的 Gridview 以在自定义图像大小方面表现出色、Docker重命名镜像名称和TAG操作、ios – 将自定义图像设置为UIBarButtonItem但不显示任何图像、ios – 有没有办法关闭Xcode 8的图像名称自动完成功能?的相关知识,希望对你有所帮助。

本文目录一览:

Scrapy:使用重命名默认图像名称自定义图像管道

Scrapy:使用重命名默认图像名称自定义图像管道

如何解决Scrapy:使用重命名默认图像名称自定义图像管道?

在 pipelines.py

from scrapy.contrib.pipeline.images import ImagesPipeline
from scrapy.http import Request
from PIL import Image
from cStringIO import StringIO
import re

class jellyImagesPipeline(ImagesPipeline):

    CONVERTED_ORIGINAL = re.compile(''^full/[0-9,a-f]+.jpg$'')

    # name information coming from the spider, in each item
    # add this information to Requests() for individual images downloads
    # through "Meta" dictionary
    def get_media_requests(self, item, info):
        print "get_media_requests"
        return [Request(x, Meta={''image_name'': item["image_name"]})
                for x in item.get(''image_urls'', [])]

    # this is where the image is extracted from the HTTP response
    def get_images(self, response, request, info):
        print "get_images"

        for key, image, buf, in super(jellyImagesPipeline, self).get_images(response, request, info):
            if self.CONVERTED_ORIGINAL.match(key):
                key = self.change_filename(key, response)
            yield key, image, buf

    def change_filename(self, key, response):
        return "full/%s.jpg" % response.Meta[''image_name''][0]

在中settings.py,确保有

ITEM_PIPELInes = [''jelly.pipelines.jellyImagesPipeline'']
IMAGES_STORE = ''/path/to/where/you/want/to/store/images''

spider示例:从Python.org主页获取图像,已保存图像的名称(和路径)将遵循站点结构,即位于名为 www.python.org

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item, Field
import urlparse

class CustomItem(Item):
    image_urls = Field()
    image_names = Field()
    images = Field()

class ImageSpider(BaseSpider):
    name = "customimg"
    allowed_domains = ["www.python.org"]
    start_urls = [''http://www.python.org'']

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select(''//img'')
        items = []
        for site in sites:
            item = CustomItem()
            item[''image_urls''] = [urlparse.urljoin(response.url, u) for u in site.select(''@src'').extract()]
            # the name information for your image
            item[''image_name''] = [''whatever_you_want'']
            items.append(item)
        return items

解决方法

所有图像都已成功下载到我定义的文件夹中,但是在保存到硬盘之前,我无法命名所选的下载图像。

这是我的代码

pipelines.py

class jellyImagesPipeline(ImagesPipeline):


def image_key(self,url,item):
    name = item[''image_name'']
    return ''full/%s.jpg'' % (name)


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

Image_spider.py

 def getImage(self,response):
 item = JellyfishItem()
 item[''image_urls'']= [response.url]
 item[''image_name'']= response.meta[''image_name'']
 return item

我需要在代码中进行哪些更改?

更新1

pipelines.py

class jellyImagesPipeline(ImagesPipeline):

    def image_custom_key(self,response):
        print ''\n\n image_custom_key \n\n''
        name = response.meta[''image_name''][0]
        img_key = ''full/%s.jpg'' % (name)
        print "custom image key:",img_key
        return img_key

    def get_images(self,response,request,info):
        print "\n\n get_images \n\n"
        for key,image,buf,in super(jellyImagesPipeline,self).get_images(response,info):
            yield key,buf


        key = self.image_custom_key(response)
        orig_image = Image.open(StringIO(response.body))
        image,buf = self.convert_image(orig_image)
        yield key,buf

    def get_media_requests(self,info):
        print "\n\nget_media_requests\n"
        return [Request(x,meta={''image_name'': item["image_name"]})
                for x in item.get(''image_urls'',[])]

更新2

def image_key(self,image_name):
print ''entered into image_key''
    name = ''homeshop/%s.jpg'' %(image_name)
    print name
    return name

def get_images(self,request):
    print ''\nEntered into get_images''
    key = self.image_key(request.url)
yield key 

def get_media_requests(self,info):
print ''\n\nEntered media_request''
print item[''image_name'']
    yield Request(item[''image_urls''][0],meta=dict(image_name=item[''image_name'']))

def item_completed(self,results,info):
    print ''\n\nentered into item_completed\n''
print ''Name : '',item[''image_urls'']
print item[''image_name'']
for tuple in results:
    print tuple

C# 导出带有图像的 Gridview 以在自定义图像大小方面表现出色

C# 导出带有图像的 Gridview 以在自定义图像大小方面表现出色

如何解决C# 导出带有图像的 Gridview 以在自定义图像大小方面表现出色?

我尝试将 Gridview 导出到包含图像的 excel,代码成功执行,但是 excel 单元格内的图像大小大于单元格的高度和宽度,在与导出部分相关的代码下方。

感谢帮助

 protected void ExportExcel_Click(object sender,EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        response.addheader("content-disposition","attachment;filename=GridViewExport.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        foreach (TableCell cell in GridView1.HeaderRow.Cells)
        {
            cell.BackColor = GridView1.HeaderStyle.BackColor;
        }
        foreach (GridViewRow row in GridView1.Rows)
        {
            row.BackColor = System.Drawing.Color.White;
            foreach (TableCell cell in row.Cells)
            {
                if (row.RowIndex % 2 == 0)
                {
                    cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                    cell.Width = 200;
                    cell.Height = 150;
                }
                else
                {
                    cell.BackColor = GridView1.RowStyle.BackColor;
                    cell.Width = 150;
                    cell.Height = 100;
                }
                cell.Css;
            }
        }
        
        GridView1.RenderControl(hw);
        string style = @"<style> .textmode { mso-number-format:\@; } </style>";
        Response.Write(style);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Docker重命名镜像名称和TAG操作

Docker重命名镜像名称和TAG操作

使用docker images时,可能会出现REPOSITORY和TAG均为none的镜像,如下图

这时,我们可以重命名镜像

# docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

补充知识:docker image 重命名

docker image 名称不小心写错了,例如想命名为 ubuntu1604-arm-qt,写成了 unbuntu1604-arm-qt。如何改回来?

用 docker tag 重命名

docker images 找到image_id

找到此 image id 是 efeb4214cfc4。

haojc@ubuntu:~/docker/ubuntu1604-arm-qt$ docker images
REPOSITORY           TAG         IMAGE ID      CREATED       SIZE
sword2000/unbuntu1604-arm-qt  1.0         efeb4214cfc4    13 hours ago    7.05GB
hello-world          latest       fce289e99eb9    7 months ago    1.84kB

用docker tag <image_id> 重新命名

docker tag efeb4214cfc4 ubuntu1604-arm-qt

然后将原来的image名称删除

docker rmi sword2000/unbuntu1604-arm-qt:1.0

haojc@ubuntu:~/docker/ubuntu1604-arm-qt$ docker rmi sword2000/unbuntu1604-arm-qt:1.0
Untagged: sword2000/unbuntu1604-arm-qt:1.0
haojc@ubuntu:~/docker/ubuntu1604-arm-qt$ docker images
REPOSITORY          TAG         IMAGE ID      CREATED       SIZE
sword2000/ubuntu1604-arm-qt  1.0         efeb4214cfc4    13 hours ago    7.05GB
hello-world          latest       fce289e99eb9    7 months ago    1.84kB

以上这篇Docker重命名镜像名称和TAG操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

您可能感兴趣的文章:
  • Docker 彻底删除私有库镜像的操作
  • Docker和镜像的操作方法
  • 给Docker更换国内镜像源操作
  • 在docker下删除两个id相同的镜像的操作
  • docker利用单个镜像映射到多个端口操作
  • docker常用命令总结之安装、镜像、容器基本操作
  • Docker镜像的基本操作方法

ios – 将自定义图像设置为UIBarButtonItem但不显示任何图像

ios – 将自定义图像设置为UIBarButtonItem但不显示任何图像

我想将自定义图像设置为UIBarButtonItem,但它只显示一个矩形框,并且它不显示实际图像.

func setupbrowserToolbar() {
    let browser = UIToolbar(frame: CGRect(x: 0,y: 20,width: self.view.frame.width,height: 30))
    //配置返回组件
    let path = NSBundle.mainBundle().pathForResource("back",ofType: "png")
    let urlstr = NSURL(fileURLWithPath: path!)
    let data = NSData(contentsOfURL: urlstr)
    let btnback = UIBarButtonItem(image: UIImage(data: data!),style: UIBarButtonItemStyle.Plain,target: self,action: Selector("backClicked:"))
    //分割按钮1
    let btngrap1 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,target: nil,action: nil)
    //前进按钮
    let btnforward = UIBarButtonItem(image: UIImage(named: "forward.png"),action: Selector("forwardClicked:"))
    //分割按钮2
    let btngrap2 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,action: nil)
    //重新加载
    let btnreload = UIBarButtonItem(image: UIImage(named: "reload.png"),action: Selector("reloadClicked:"))
    //分割按钮3
    let btngrap3 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,action: nil)
    //停止加载
    let btnstop = UIBarButtonItem(image: UIImage(named:"stop.png"),action: Selector("stopClicked:"))
    progress = UIProgressView((frame: CGRect(x: 0,y: 48,width: self.view.frame.width-50,height: 2)))
    progress.progress = 0
    browser.setItems([btnback,btngrap1,btnforward,btngrap2,btnreload,btngrap3,btnstop],animated: true)
    ptimer = NSTimer(timeInterval: 0.2,selector: Selector("loadProgress"),userInfo: nil,repeats: true)
    self.view.addSubview(browser)
}

my app screen shot

上面的方法是工具栏配置,但我不知道有什么问题.

解决方法

那是因为UIBarButtonItem图像的默认渲染模式总是将图像绘制为模板图像,忽略其颜色信息(UIImageRenderingModeAlwaystemplate).只需使用UIImage的方法imageWithRenderingMode创建您的图像始终是原始的.

UIImage(named: "yourImageName")!.withRenderingMode(.alwaysOriginal)

ios – 有没有办法关闭Xcode 8的图像名称自动完成功能?

ios – 有没有办法关闭Xcode 8的图像名称自动完成功能?

Xcode 8有这个新功能,当你使用UIImage(名为:)时,它应该建议图像文件名

在我的情况下,它建议图像名称,即使它没有任何意义.

例:

Example autocomplete image

偏好没有任何内容.我想知道是否有一些秘密命令来禁用这部分自动完成.

解决方法

不幸的是,不能关闭它,并且没有任何声明在Xcode 8.1发行说明中修复了这个问题.

它应该是固定的,或者您应该有机会将其关闭.当它用于它的目的时,功能是很好的,正如我在this帖子中描述的那样.

但问题是,当你提到它时,Xcode 8在内容中插入图像是不可能的.例如,如果您有一个for迭代并为x in键入以启动循环,并且您在项目中使用此语法将名称与“in”匹配的任何图像.

烦人的问题,我希望苹果很快就会解决,因为这个功能只适用于图像.

更新:
刚刚确认这仍然是Xcode 8.1稳定版中的一个问题.

更新:
此功能保留在Xcode版本9.0 beta 6(9M214v)中

enter image description here

今天关于Scrapy:使用重命名默认图像名称自定义图像管道的分享就到这里,希望大家有所收获,若想了解更多关于C# 导出带有图像的 Gridview 以在自定义图像大小方面表现出色、Docker重命名镜像名称和TAG操作、ios – 将自定义图像设置为UIBarButtonItem但不显示任何图像、ios – 有没有办法关闭Xcode 8的图像名称自动完成功能?等相关知识,可以在本站进行查询。

本文标签: