小编Dan*_*gen的帖子

使用PIL将RGBA PNG转换为RGB

我正在使用PIL将使用Django上传的透明PNG图像转换为JPG文件.输出看起来很糟糕.

源文件

透明的源文件

Image.open(object.logo.path).save('/tmp/output.jpg', 'JPEG')
Run Code Online (Sandbox Code Playgroud)

要么

Image.open(object.logo.path).convert('RGB').save('/tmp/output.png')
Run Code Online (Sandbox Code Playgroud)

结果

两种方式,生成的图像如下所示:

结果文件

有没有办法来解决这个问题?我想要有透明背景的白色背景.


感谢很棒的答案,我想出了以下函数集合:

import Image
import numpy as np


def alpha_to_color(image, color=(255, 255, 255)):
    """Set all fully transparent pixels of an RGBA image to the specified color.
    This is a very simple solution that might leave over some ugly edges, due
    to semi-transparent areas. You should use alpha_composite_with color instead.

    Source: http://stackoverflow.com/a/9166671/284318

    Keyword Arguments:
    image -- PIL RGBA Image object
    color -- Tuple r, g, b (default 255, 255, 255)

    """ …
Run Code Online (Sandbox Code Playgroud)

python png jpeg python-imaging-library rgba

85
推荐指数
3
解决办法
10万
查看次数

Django Rest Framework:动态返回字段子集

问题

根据blogpost 设计实用RESTful API的最佳实践中的建议,我想在fields基于Django Rest Framework的API中添加一个查询参数,使用户只能为每个资源选择一个字段子集.

串行:

class IdentitySerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = models.Identity
        fields = ('id', 'url', 'type', 'data')
Run Code Online (Sandbox Code Playgroud)

常规查询将返回所有字段.

GET /identities/

[
  {
    "id": 1,
    "url": "http://localhost:8000/api/identities/1/",
    "type": 5,
    "data": "John Doe"
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

fields参数的查询应该只返回字段的子集:

GET /identities/?fields=id,data

[
  {
    "id": 1,
    "data": "John Doe"
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

包含无效字段的查询应忽略无效字段或抛出客户端错误.

目标

这有可能开箱即用吗?如果没有,实现这个的最简单方法是什么?是否有第三方包已经这样做了吗?

django django-rest-framework

85
推荐指数
3
解决办法
3万
查看次数

限制字符tesseract正在寻找

是否可以限制tesseract正在寻找的字符集(例如,仅搜索字母az)?这将极大地改善我的结果.

ocr tesseract

60
推荐指数
4
解决办法
7万
查看次数

如何在Django 1.3中使用基于类的视图重定向条件?

我正在使用ListView根据标签列出视频.过滤发生在get_queryset()中.如果标签不包含任何视频,我想将用户重定向到另一个页面.

有了功能,就很容易了.查询,检查查询集,重定向.在课堂上,我没有这样做:

class VideosView(generic.ListView):

    def get_queryset(self):
        """
            This work.
        """

        tag = self.kwargs.get('tag', None)

        self.videos = Video.on_site.all()

        if tag:
            self.videos = Video.tagged.with_all(tag, self.videos)

        return self.videos

    def get(self, request, *args, **kwargs):
        """
        This doesn't work because self.videos doesn't exist yet.
        """
        if not self.videos:
            return redirect('other_page')

        return super(Videos, self).get(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

django redirect class-based-views

28
推荐指数
2
解决办法
2万
查看次数

Django模板:使用其他语言获取当前URL

我正在使用i18n_patternsDjango应用程序创建语言前缀.

我的网址如下所示:

/de/contact/
/fr/contact/
/it/contact/
Run Code Online (Sandbox Code Playgroud)

在我的基本模板中,我循环遍历所有可用语言以显示语言切换链接.

{% get_available_languages as languages %}
<nav id="language_chooser">
    <ul>
        {% for lang_code, lang_name in languages %}
            {% language lang_code %}
            <li><a href="{% url 'home' %}" alt="{{ lang_name }}" title="{{ lang_name }}">{{ lang_code }}</a></li
            {% endlanguage %}
        {% endfor %}
    </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我正在撤消"主页"URL.有没有办法获得当前页面的翻译URL?

如果我在我的"联系"页面的德语版本上,我希望"fr"链接指向"联系"页面的法语版本,而不是"主页"页面.

django django-templates internationalization

28
推荐指数
4
解决办法
1万
查看次数

Tesseract混淆了两个数字

我正在编写一个应用程序来扫描图像中的数字.

这些数字是使用OCR-B字体,并且还可以含有+>字符.

这是我的源图片:

源图像

即使将字符集限制为上述字符,使用Tesseract的扫描也不是很好.由于我没有找到任何针对Tesseract的OCRB培训文件,我决定自己进行培训.

我创建了这个训练图像并从中制作了一个盒子文件.盒子文件是正确的,所有字母都正确匹配.

然后我完成了这里描述的所有步骤来创建其他必要的文件.

使用这个新训练的OCR-B tessdata-set,我在源图像上得到了相当不错的结果,有一个小错误:所有1s都被误认为8s,反之亦然.用于处理图像的命令是

$ tesseract esr2c.tif ocrb-esr2c -l ocrb
Run Code Online (Sandbox Code Playgroud)

并且源图像的输出是

0800000001456> 8 00000195731208 8 01050008 023+ 08 0301226> 20

如果你交换所有1s和8s并将它与源图像进行比较,输出将是正确的(除了我可以忽略的最后两个字母).

怎么会发生这种情况?我在培训过程中是否犯了一些错误?我该如何解决?

ocr tesseract

18
推荐指数
1
解决办法
1万
查看次数

如何在android检测测试中停止并重新启动活动?

我正在尝试编写一个Android活动检测测试,停止(onPause()然后onStop())并重新启动当前活动.我试过了

activity.finish();
activity = getActivity();
Run Code Online (Sandbox Code Playgroud)

......但这似乎不能正常工作.

测试的目标是声明表单数据在onPause()方法期间存储并在方法期间重新读取onStart().它在手动执行时有效,但测试失败,我从中得出结论activity.finish()似乎是停止和重新启动活动的错误方法.


编辑:我的主要问题似乎是同步问题.重新启动活动后,测试运行器不会等待所有事件处理程序完成.以下行将暂停测试执行,直到活动空闲为止:

getInstrumentation().waitForIdleSync()
Run Code Online (Sandbox Code Playgroud)

除此之外,请查看已接受的答案,以获取有关生命周期的更多有价值信息.

testing android android-testing

16
推荐指数
2
解决办法
1万
查看次数

jQuery不提交表单

我有以下HTML代码:

<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>IT-Services Umfrage - Fragen</title>

    <link rel="stylesheet" type="text/css" href="/IT/umfrage/../../style.css" />
    <link rel="stylesheet" type="text/css" href="/IT/umfrage/css/umfrage.css" />

    <script type="text/javascript" src="/IT/umfrage/../../inc/jquery-1.4.2.js"></script>
    <script type="text/javascript" src="/IT/umfrage/js/umfrage.js"></script>
</head>

<body id="page-show">
    <div class="ueberschriftsbalken"><span>IT-Services Umfrage - Fragen</span></div>
    <br />
    <div id="content">

        <form action="/IT/umfrage/Umfrage/save" method="post" id="umfrageForm">
            <div class="frage radio">
                <p>1. Wie professionell empfinden Sie das Auftreten der IT-Service Anlaufstelle?</p>
                <label for="frage1_1"><input type="radio" name="frage1" id="frage1_1" value="1" /> Lausig</label><br />
                <label for="frage1_2"><input type="radio" name="frage1" id="frage1_2" value="2" …
Run Code Online (Sandbox Code Playgroud)

html javascript forms jquery

12
推荐指数
2
解决办法
2万
查看次数

Django ORM:按额外属性过滤

我想通过串联字符串过滤一些数据库对象.

正常的SQL查询将是:

SELECT concat(firstName, ' ', name) FROM person WHERE CONCAT(firstName, ' ', name) LIKE "a%";
Run Code Online (Sandbox Code Playgroud)

在模型中,我创建了一个名为PersonObjects的管理器:

class PersonObjects(Manager):
    attrs = { 
        'fullName': "CONCAT(firstName, ' ', name)"
    }   

    def get_query_set(self):
        return super(PersonObjects, self).get_query_set().extra(
            select=self.attrs)
Run Code Online (Sandbox Code Playgroud)

我也在我的模型中配置了这个:

objects = managers.PersonObjects()
Run Code Online (Sandbox Code Playgroud)

现在访问fullName适用于单个对象:

>>> p = models.Person.objects.get(pk=4)
>>> p.fullName
u'Fred Borminski'
Run Code Online (Sandbox Code Playgroud)

但它在过滤器中不起作用:

>>> p = models.Person.objects.filter(fullName__startswith='Alexei')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/django/db/models/manager.py", line 141, in filter
    return self.get_query_set().filter(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 550, in filter
    return self._filter_or_exclude(False, …
Run Code Online (Sandbox Code Playgroud)

python database django orm

12
推荐指数
1
解决办法
2万
查看次数

有没有办法在Python中识别继承的方法?

我想告诉除了重载或新定义的方法之外的继承方法.这可能与Python有关吗?

例:

class A(object):
  def spam(self):
    print 'A spam'
  def ham(self):
    print 'A ham'

class B(A):
  def spam(self):
    print 'Overloaded spam'
  def eggs(self):
    print 'Newly defined eggs'
Run Code Online (Sandbox Code Playgroud)

所需功能:

>>> magicmethod(B.spam)
'overloaded'
>>> magicmethod(B.ham)
'inherited'
>>> magicmethod(B.eggs)
'newly defined'
Run Code Online (Sandbox Code Playgroud)

是否有像示例中的"魔术方法",或者某种方式来区分这些类型的方法实现?

python inheritance

12
推荐指数
3
解决办法
4576
查看次数