Ознакомьтесь с этой статьей, она показывает, как имитировать SQL ROW_NUMBER () с разделом в MySQL. Я столкнулся с тем же самым сценарием в реализации WordPress. Мне нужен ROW_NUMBER (), и его там не было.
http://www.explodybits.com/2011/11/mysql-row-number/
В примере в статье используется один разделять по полю. Чтобы разделить дополнительные поля, вы можете сделать что-то вроде этого:
SELECT @row_num := IF(@prev_value=concat_ws('',t.col1,t.col2),@row_num+1,1) AS RowNumber
,t.col1
,t.col2
,t.Col3
,t.col4
,@prev_value := concat_ws('',t.col1,t.col2)
FROM table1 t,
(SELECT @row_num := 1) x,
(SELECT @prev_value := '') y
ORDER BY t.col1,t.col2,t.col3,t.col4
Использование concat_ws обрабатывает null. Я проверил это на 3 поля, используя int, date и varchar. Надеюсь это поможет. Просмотрите статью, так как она нарушает этот запрос и объясняет это.
Для получения альфа-слоя RGBA-изображения достаточно:
red, green, blue, alpha = img.split()
или
alpha = img.split()[-1]
И существует способ установки альфа-слоя:
img.putalpha(alpha)
Ключ прозрачности используется только для определения индекса прозрачности в режиме палитры (P). Если вы хотите закрыть также и регистр прозрачности в режиме палитры и закрыть все регистры, вы можете сделать это
if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info):
alpha = img.convert('RGBA').split()[-1]
Примечание: Метод преобразования необходим, когда image.mode is LA, из-за ошибки в PIL.
.# python 2.6+
import operator, itertools
def get_alpha_channel(image):
"Return the alpha channel as a sequence of values"
# first, which band is the alpha channel?
try:
alpha_index= image.getbands().index('A')
except ValueError:
return None # no alpha channel, presumably
alpha_getter= operator.itemgetter(alpha_index)
return itertools.imap(alpha_getter, image.getdata())
Вы можете получить альфа-данные из целого изображения за один раз, преобразовав изображение в строку с режимом 'A', например, в этом примере мы получаем альфа-данные из изображения и сохраняем их как изображение в масштабе серого :)
from PIL import Image
imFile="white-arrow.png"
im = Image.open(imFile, 'r')
print im.mode == 'RGBA'
rgbData = im.tostring("raw", "RGB")
print len(rgbData)
alphaData = im.tostring("raw", "A")
print len(alphaData)
alphaImage = Image.fromstring("L", im.size, alphaData)
alphaImage.save(imFile+".alpha.png")
img.info
относится к изображению в целом -- альфа-значение в RGBA-изображении - в расчете на один пиксель, так что, конечно, его не будет в img.info
. Метод getpixel
объекта изображения, которому в качестве аргумента дана координата, возвращает кортеж со значениями (в данном случае четырёх) полос для этого пиксела -- последним значением кортежа будет A, альфа-значение.