Python třídění podle QR – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python třídění podle QR – Python – Fórum – Programujte.comPython třídění podle QR – Python – Fórum – Programujte.com

 

Daniel Pallavicini
~ Anonymní uživatel
9 příspěvků
17. 4. 2017   #1
-
0
-

Dobrý den,

potřeboval bych poradit, zda-li je možné doprogramovat do tohoto https://github.com/cmcoffman/QR-Barcode-Image-Sorter/blob/master/qrcode%20sorter.py možnost, aby to bylo schopné přečíst více jak 1 QR kód z obrázku a fotky kobírovat do složek podle tohoto kódu a tvořit tak třeba i duplicity ve složkách.

za toto doprogramování i zaplatím.

Děkuji Daniel

Nahlásit jako SPAM
IP: 77.104.207.–
gna
~ Anonymní uživatel
1891 příspěvků
17. 4. 2017   #2
-
0
-

   

import subprocess
import os
import re
import locale
import glob

encoding = locale.getdefaultlocale()[1]
zbarimg = "zbarimg"

def get_codes(filename):
	try:
		output = subprocess.check_output([zbarimg, "-q", filename])
		lines = output.strip().split(b'\n')
		lines = [line.decode(encoding) for line in lines]
		codes = [line.split(':',1)[1].strip() for line in lines]
		return codes if len(codes) else ["unreadable_code"]
	except:
		return ["unreadable_code"]

def make_path(codes, filename):
	safe_codes = [re.sub("[:/\\\\]", "_", code) for code in codes]
	fullpath = os.path.join(*safe_codes, filename)

	if os.path.exists(fullpath):
		dirname = os.path.dirname(fullpath)
		filename,fileext = os.path.splitext(os.path.basename(fullpath))

		i = 0
		while os.path.exists(fullpath):
			i += 1
			fullpath = os.path.join(dirname, "%s (%d)%s" % (filename, i, fileext))

	return fullpath

image_files = glob.glob('*.JPG') + glob.glob('*.png')
print(image_files)

for image in image_files:
	print("======")
	print("file:", image)
	codes = get_codes(image)
	print("codes:", codes)
	dest = make_path(codes, image)
	print("dest:", dest)
	os.makedirs(os.path.dirname(dest), exist_ok=True)
	os.rename(image, dest)
Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1891 příspěvků
17. 4. 2017   #3
-
0
-

Do toho zbarimg si zase dej tu cestu k programu jak byla.

Nahlásit jako SPAM
IP: 213.211.51.–
Daniel Pallavicini
~ Anonymní uživatel
9 příspěvků
17. 4. 2017   #4
-
0
-

#3 gna
zdravím, teď jsem to zkusil, ale dělá to:

vytvoří to složku s názvem 2 

vytvoří to složku s názvem 1 ve složce s názvem 2 

do složky 1 vloží fotku s QR kódy (1 a 2)

Potřeboval bych:

vytvořit složku s názvem získanou z QR kódu (tj. například 1, 2, atd.)

do ní vložit fotku

hledat zda-li se tam nachází i jiný QR kód a vytvořit další složku.

Děkuji 

Daniel :)

Nahlásit jako SPAM
IP: 82.202.90.–
gna
~ Anonymní uživatel
1891 příspěvků
17. 4. 2017   #5
-
0
-

Tak nějak by to mělo fungovat.

Podle kódu to vytvoří složku a do ní přesune ten obrázek. Když je kódů víc než jeden, tak to vytváří podsložky. A pokud cílový soubor už existuje, tak se do názvu přidá unikátní číslo.

a.png   -> 1\a.png       # kod 1
b.png   -> 2\b.png       # kod 2
cd.png  -> 3\4\cd.png    # kody 3,4
efg.png -> 5\6\7\efg.png # kody 5,6,7
a.png   -> 1\a (1).png   # kod 1
a.png   -> 1\a (2).png   # kod 1
Nahlásit jako SPAM
IP: 213.211.51.–
Daniel Pallavicini
~ Anonymní uživatel
9 příspěvků
17. 4. 2017   #6
-
0
-

#5 gna
já bych právě potřeboval to,

efg.png (kódy 5,6,7)

  • vytvořil první složku s názvem kódu

 5/efg.png

  • pak vytvoří další složku

6/efg.png

  • a na konec

7/efg.png

takže mi to fotku přesune do několika složek (podle množství kódů na fotce) 

boužel nedokážu v kódu číst ač se hodně snažím. Budu Vám velmi vděčný pokud si dáte tu práci a koukl byste na ten kód :-)

Děkuji

Daniel

Nahlásit jako SPAM
IP: 82.202.90.–
gna
~ Anonymní uživatel
1891 příspěvků
17. 4. 2017   #7
-
0
-

Takže takhle? 

import subprocess, os, re, locale, glob, shutil

encoding = locale.getdefaultlocale()[1]
zbarimg = "zbarimg"

def get_codes(filename):
	try:
		output = subprocess.check_output([zbarimg, "-q", filename])
		lines = output.strip().split(b'\n')
		lines = [line.decode(encoding) for line in lines]
		codes = [line.split(':',1)[1].strip() for line in lines]
		return codes if len(codes) else ["unreadable_code"]
	except:
		return ["unreadable_code"]

def make_path(code, filename):
	safecode = re.sub("[:/\\\\]", "_", code)
	fullpath = os.path.join(safecode, filename)

	if os.path.exists(fullpath):
		dirname = os.path.dirname(fullpath)
		filename,fileext = os.path.splitext(os.path.basename(fullpath))

		i = 0
		while os.path.exists(fullpath):
			i += 1
			fullpath = os.path.join(dirname, "%s (%d)%s" % (filename, i, fileext))

	return fullpath

image_files = glob.glob('*.JPG') + glob.glob('*.png')
print(image_files)

for image in image_files:
	print("======")
	print("file:", image)
	codes = get_codes(image)
	for code in codes:
		print("code:", code)
		dest = make_path(code, image)
		print("dest:", dest)
		os.makedirs(os.path.dirname(dest), exist_ok=True)
		shutil.copyfile(image, dest)
	os.remove(image)
Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1891 příspěvků
17. 4. 2017   #8
-
0
-

   

a.png   -> 1\a.png       # kod 1
b.png   -> 2\b.png       # kod 2
cd.png  -> 3\cd.png      # kody 3,4
        -> 4\cd.png
efg.png -> 5\efg.png     # kody 5,6,7
        -> 6\efg.png
        -> 7\efg.png
a.png   -> 1\a (1).png   # kod 1
a.png   -> 1\a (2).png   # kod 1
Nahlásit jako SPAM
IP: 213.211.51.–
Daniel Pallavicini
~ Anonymní uživatel
9 příspěvků
17. 4. 2017   #9
-
0
-

#8 gna

Dáte mi Váš email at se s Vámi mohu spojit? Rád bych Vám poděkoval symbolickou částkou. 

Děkuji

Nahlásit jako SPAM
IP: 82.202.90.–
gna
~ Anonymní uživatel
1891 příspěvků
17. 4. 2017   #10
-
0
-

Děkuji, ale to není potřeba. Možná až budete mít někdy něco většího.

Nahlásit jako SPAM
IP: 213.211.51.–
Daniel Pallavicini
~ Anonymní uživatel
9 příspěvků
26. 4. 2017   #11
-
0
-

Dobrý večer,

zjistil jsem jednu takovou drobnost.. Když je QR kód pod úhlem vůči fóťáku, tak není schopný QR kód rozeznat. Dalo by se to nějak ošetřit jednoduše? Nebo už je to časově náročnější? Byl bych rád kdybyste mě kontaktoval prostřednictví emailu daniel@pallavicini.cz

Děkuji
Daniel Pallavicini

Nahlásit jako SPAM
IP: 82.202.90.–
Daniel Pallavicini
~ Anonymní uživatel
9 příspěvků
20. 11. 2017   #12
-
0
-

#10 gna
Dobrý den,

našel byste čas na dokončení appky podle nějakého zadání? Samozřejmostí by to bylo finančně ohodnocené. Prosím kontaktujte mě. 

daniel@pallavicini.cz


Děkuji 

Daniel Pallavicini

Nahlásit jako SPAM
IP: 82.202.90.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý