我正在使用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) 根据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)
包含无效字段的查询应忽略无效字段或抛出客户端错误.
这有可能开箱即用吗?如果没有,实现这个的最简单方法是什么?是否有第三方包已经这样做了吗?
是否可以限制tesseract正在寻找的字符集(例如,仅搜索字母az)?这将极大地改善我的结果.
我正在使用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) 我正在使用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"链接指向"联系"页面的法语版本,而不是"主页"页面.
我正在编写一个应用程序来扫描图像中的数字.
这些数字是使用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并将它与源图像进行比较,输出将是正确的(除了我可以忽略的最后两个字母).
怎么会发生这种情况?我在培训过程中是否犯了一些错误?我该如何解决?
我正在尝试编写一个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)
除此之外,请查看已接受的答案,以获取有关生命周期的更多有价值信息.
我有以下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) 我想通过串联字符串过滤一些数据库对象.
正常的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有关吗?
例:
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)
是否有像示例中的"魔术方法",或者某种方式来区分这些类型的方法实现?