abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 09:55 | Nová verze

Byla vydána verze 8.0 sady aplikací pro SSH komunikaci OpenSSH. Řešena je bezpečnostní chyba CVE-2019-6111 v scp. Přidána byla experimentální podpora výměny klíčů, která je odolná vůči kvantovým počítačům (Streamlined NTRU Prime 4591^761 a X25519). Výchozí délka nově generovaných RSA klíčů je 3072 bitů.

Ladislav Hagara | Komentářů: 0
včera 22:44 | Komunita

Zend Framework, open source objektově orientovaný webový aplikační framework implementovaný v PHP, byl předán neziskovému technologickému konsorciu Linux Foundation. Framework se pod novým názvem Laminas v průběhu několika měsíců stane oficiálním projektem konsorcia.

Ladislav Hagara | Komentářů: 2
včera 22:00 | Komunita

Gentoo Foundation a společnost Nitrokey společně oznámily, že všichni vývojáři linuxové distribuce Gentoo budou vybaveni kryptografickým tokenem Nitrokey Pro 2 (pdf). Vývojáři se mají zaregistrovat s emailovou adresou @gentoo.org.

Ladislav Hagara | Komentářů: 0
včera 20:55 | Zajímavý software

Článek na PIXLS.US představuje svobodný program pro zpracování astronomických fotografií s názvem Siril (GitLab) a uvádí postup, jak v Siril vytvořit hezký snímek noční oblohy.

Ladislav Hagara | Komentářů: 0
včera 10:11 | Nová verze

Laboratoře CZ.NIC vydaly novou verzi 4.13.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Nové vlastnosti: U existujícího účtu lze změnit přihlašovací jméno. Podmínkou je, že starým i novým jménem se přihlašuje do stejné datové schránky. Aplikace dovoluje volitelné automatické nahrávání nově stažených datových zpráv do

… více »
Ladislav Hagara | Komentářů: 26
včera 01:11 | Zajímavý software

Mozilla na svém blogu Mozilla Hacks věnovaném vývojářům představila projekty Iodide a Pyodide. Iodide umožňuje nejenom vědcům vytvářet interaktivní dokumenty pomocí webových technologií. Viz například Lorenzův atraktor. Rádi byste něco upravili? Stačí kliknout na tlačítko EXPLORE. Po úpravě na tlačítko REPORT. Pyodide přidává do Iodide podporu programovacího jazyka Python a souvisejících knihoven. Na straně klienta není nutné nic instalovat. K vyzkoušení je demo.

Ladislav Hagara | Komentářů: 2
16.4. 23:44 | IT novinky

ČVUT má nejvýkonnější superpočítač pro výzkum umělé inteligence v ČR. Fakulta elektrotechnická a Fakulta informačních technologií ČVUT v Praze spojily své síly a založily Výzkumné centrum informatiky (Research Center for Informatics – RCI). V rámci projektu byl vybudován nejvýkonnější počítačový klastr pro výzkum umělé inteligence v ČR v hodnotě 41,6 milionu korun. Toto jedinečné zařízení, které se svým výkonem řadí mezi superpočítače, se nachází v podzemí historické budovy Fakulty elektrotechnické ČVUT na Karlově náměstí.

Ladislav Hagara | Komentářů: 15
16.4. 15:22 | Nová verze

Byla vydána (YouTube) verze 2019.1 multiplatformního herního enginu Unity (Wikipedie). Přehled novinek i s videoukázkami v příspěvku na blogu a v poznámkách k vydání. Zdůraznit lze preview Unity Editoru pro Linux.

Ladislav Hagara | Komentářů: 0
16.4. 14:33 | Zajímavý software

Na GitHubu byly zveřejněny zdrojové kódy textových her (textovek) od společnosti Infocom. Nahlédnout tak lze do Zork I z 1980 nebo The Hitchhiker's Guide to the Galaxy z 1984. Naprogramovány jsou v programovacím jazyce ZIL (Zork Implementation Language) [Hacker News].

Ladislav Hagara | Komentářů: 1
15.4. 18:55 | Komunita

Linuxová distribuce CentOS slaví 15 let. Při této příležitosti bylo na YouTube publikováno několik zajímavých rozhovorů.

Ladislav Hagara | Komentářů: 17
Používáte headset pro virtuální realitu?
 (1%)
 (2%)
 (1%)
 (20%)
 (0%)
 (74%)
Celkem 202 hlasů
 Komentářů: 12, poslední dnes 01:19
Rozcestník

Pomalá fce Gdk::Pixbuf::create_from_file() na Windows

16.6.2013 11:53 | Přečteno: 1189× | Programování | Výběrový blog | poslední úprava: 16.6.2013 11:56

Narazil jsem na problém s rychlostí fce Gdk::Pixbuf::create_from_file() v Gtkmm 2.22 pod Windows. Pokud se použije pro načtení cca 4MB JPEGu 5600x3700, tak jí to trvá cca 10s.

Na Linuxu to trvá této fci cca 350ms. Pod Wine se tento problém neprojevuje, načtení trvá jen o něco málo déle než na Linuxu. Použil jsem ftp.gnome.org/pub/GNOME/binaries/win32/gtkmm/2.22. Zkoušel jsem i některé starší verze knihovny, ale problém přetrvával.

Něchtělo se mi ztrácet čas zbytečnou kompilací celé knihovny a všech jejich závislostí, tak jsem hledal zda-li se nedají sehnat binárky někde jinde. A našel jsem je např. v OpenSUSE 12.3 ve verzi 2.24.2, tyto binárky fungují bez problémů i ve Windows.

Vývoj dělám v Debian Wheezy a verzi pro Windows kompiluji cross-kompilátorem z projektu MinGW, který je jeho součástí. Binárky pro Windows testuji většinou pod Wine a na čistých Windows až před vydáním další ostré verze.

Uvítal jsem, že je yum součástí Debianu:

# aptitude install yum

Přidáme repozitář s potřebnými balíčky:

# vim /etc/yum/repos.d/opensuse.repo
[windows_mingw_win32]
name=Cross-toolchain for 32-bit windows and 32-bit windows packages (openSUSE_12.3)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/repodata/repomd.xml.key
enabled=1

Zjistíme v jakých balíčcích se nachází knihovna Gtkmm a nainstalujeme je:

# yum search gtkmm2
=== Matched: gtkmm2 ===
mingw32-gtkmm2.noarch : C++ bindings for GTK+2
mingw32-gtkmm2-debug.noarch : Debug information for package mingw32-gtkmm2
mingw32-gtkmm2-devel.noarch : C++ bindings for GTK+2 (devel)

# yum install mingw32-gtkmm2-devel.noarch mingw32-gtkmm2.noarch

Dotážeme se kde se nachází řídící soubory pro pkgconfig, abychom mohli pohodlně předávat potřebné parametry kompilátoru:

# rpm -q -l mingw32-gtkmm2-devel.noarch |grep pkgconfig
/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/gdkmm-2.4.pc
/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/gtkmm-2.4.pc

# PKG_CONFIG_PATH=/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig pkg-config --cflags --libs gtkmm-2.4

Vzhledem k tomu, že nechci instalovat závislosti cross-kompilátoru z OpenSUSE, tak jsem použil Windows verzi kompilátoru a spouštím jí pod Wine:

# yum install mingw32-gcc.noarch mingw32-gcc-c++.noarch

Třeba se to bude někomu hodit. Pokud má někdo nějaké tipy a zkušenosti k tématu, budu rád, když se o ně podělíte v diskuzi.

Zjistíme kde má MinGW knihovny:

$ yum whatprovides '*/libstdc++-6.dll'
/usr/i686-w64-mingw32/sys-root/mingw/bin/libstdc++-6.dll

Vypíšeme seznam knihoven, které musíme přibalit k binárce:

$ ./dll_dependencies.py gdk_pixbuf_create_from_file.exe /usr/i686-w64-mingw32/sys-root/mingw/bin 
libgcc_s_sjlj-1.dll
libgdkmm-2.4-1.dll
libcairomm-1.0-1.dll
libcairo-2.dll
libfontconfig-1.dll
libfreetype-6.dll
zlib1.dll
libxml2-2.dll
libpixman-1-0.dll
libpng15-15.dll
libsigc-2.0-0.dll
libstdc++-6.dll
libgdk_pixbuf-2.0-0.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libintl-8.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libffi-6.dll
libjasper-1.dll
libjpeg-8.dll
libtiff-5.dll
liblzma-5.dll
libgdk-win32-2.0-0.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libharfbuzz-0.dll
libpangowin32-1.0-0.dll
libglibmm-2.4-1.dll
libgtk-win32-2.0-0.dll
libatk-1.0-0.dll
libpangomm-1.4-1.dll
libgtkmm-2.4-1.dll
libatkmm-1.6-1.dll
libgiomm-2.4-1.dll

dll_dependencies.py

#!/usr/bin/python

import os
import sys
from subprocess import Popen, PIPE

DLLS_BLACKLIST = [
    "KERNEL32.dll",
    "msvcrt.dll",
    "USER32.dll",
    "GDI32.dll",
    "WS2_32.dll",
    "MSIMG32.DLL",
    "ADVAPI32.dll",
    "DNSAPI.DLL",
    "ole32.dll",
    "SHELL32.DLL",
    "WINMM.DLL",
    "SHLWAPI.DLL",
    "IMM32.DLL",
    "USP10.dll",
    "COMCTL32.DLL",
    "COMDLG32.DLL",
    "WINSPOOL.DRV",
]

class DllDependencies:
    def __init__(self, program_exe, dlls_path):
        self.dlls_path = dlls_path
        self.result = []
        self.get_dlls(program_exe)

        print "\n".join(self.result)

    def get_dlls(self, program_exe):
        if (not os.path.isfile(program_exe)):
            print "%s not found" % program_exe
            return

        pipe = Popen("objdump -x %s |\
                      grep 'DLL Name' |\
                      sort |\
                      uniq" % program_exe,
                     shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    
        for line in pipe.stdout.readlines():
            dll = line.strip().split()[2]
            if ((dll not in DLLS_BLACKLIST) and (dll not in self.result)):
                self.result.append(dll)
                dll = "%s/%s" % (self.dlls_path, dll)
                self.get_dlls(dll)

def main():
    if (len(sys.argv) != 3):
        print "Usage: %s PROGRAM_EXE DLLS_PATH" % sys.argv[0]
        sys.exit(-1)

    DllDependencies(sys.argv[1], sys.argv[2])

if __name__ == '__main__':
    main()

Makefile:

GPP = g++ -O2 -Wall
#W_GPP = i686-w64-mingw32-g++ -O2 -Wall
W_GPP = /usr/i686-w64-mingw32/sys-root/mingw/bin/g++.exe -O2 -Wall

GTKMM = `pkg-config --cflags --libs gtkmm-2.4`

PKG_CONFIG_PATH = /usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig
W_GTKMM_CFLAGS = `PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags gtkmm-2.4`
W_GTKMM_LIBS = `PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs gtkmm-2.4`

all: gdk_pixbuf_create_from_file gdk_pixbuf_create_from_file.exe

gdk_pixbuf_create_from_file: gdk_pixbuf_create_from_file.cpp
	$(GPP) $(GTKMM) -o gdk_pixbuf_create_from_file gdk_pixbuf_create_from_file.cpp

gdk_pixbuf_create_from_file.exe: gdk_pixbuf_create_from_file.cpp
	$(W_GPP) $(W_GTKMM_CFLAGS) -o gdk_pixbuf_create_from_file.exe gdk_pixbuf_create_from_file.cpp $(W_GTKMM_LIBS)

gdk_pixbuf_create_from_file.cpp:

#include <gtkmm.h>
#include <glib.h>
#include <iostream>

#ifdef WIN32
// Windows
#include <windows.h>
// UINT64
//#include <basetsd.h>
#else
// Linux
#include <sys/time.h>
#include <ctime>
// uint64_t
//#include <stdint.h>
#endif

void print_timestamp(const char *p_msg)
{
    static guint64 milliseconds_begin = 0;
    guint64 milliseconds;

    // http://stackoverflow.com/questions/1861294/how-to-calculate-execution-time-of-a-code-snippet-in-c
#ifdef WIN32
    // Windows
    FILETIME ft;
    LARGE_INTEGER li;
    
    // Get the amount of 100 nano seconds intervals elapsed since January 1, 1601 (UTC) and copy it
    // to a LARGE_INTEGER structure.
    GetSystemTimeAsFileTime(&ft);
    li.LowPart = ft.dwLowDateTime;
    li.HighPart = ft.dwHighDateTime;
    
    milliseconds = li.QuadPart;
    milliseconds -= 116444736000000000LL; // Convert from file time to UNIX epoch time.
    milliseconds /= 10000; // From 100 nano seconds (10^-7) to 1 millisecond (10^-3) intervals
#else
    // Linux
    struct timeval tv;
    
    gettimeofday(&tv, NULL);
    
    milliseconds = tv.tv_usec;

    // Convert from micro seconds (10^-6) to milliseconds (10^-3)
    milliseconds /= 1000;
    
    // Adds the seconds (10^0) after converting them to milliseconds (10^-3)
    milliseconds += (tv.tv_sec * 1000);
#endif

    if (milliseconds_begin == 0) {
        milliseconds_begin = milliseconds;
    }

    std::cout << "timestamp - " << p_msg << ": " << (milliseconds - milliseconds_begin) << "ms" << std::endl;
    milliseconds_begin = milliseconds;
}

int main(int argc, char *argv[])
{
    Glib::RefPtr<Gdk::Pixbuf> image;

    Gtk::Main kit(argc, argv);

    print_timestamp("BEGIN");
    image = Gdk::Pixbuf::create_from_file("image.jpeg");
    print_timestamp("END");
}
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

David Watzke avatar 16.6.2013 12:00 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
OT: btw, v C++11 už bude možné vypustit ten ifdef WIN32 díky std::chrono.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
16.6.2013 12:12 Jardík
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Super, ale na co proboha ta 32bit šmejďárna? Vždyť jsou tam i 64bit balíčky.
16.6.2013 15:13 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Silenost :-)
16.6.2013 19:24 JZD | skóre: 10 | blog: Na_dvorku
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
To chce tučňáka.
Víra znamená vyznávat to, o čem člověk dobře ví, že to není pravda. Mlčeti platina, mluviti v gajzu, býti v hajzlu.
GeoRW avatar 20.6.2013 18:32 GeoRW | skóre: 13 | blog: GeoRW | Bratislava
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
tak toto by som kvoli Windows vobec neriesil :-)
"This is to be taken with a grain of salt." ACBF - Advanced Comic Book Format
1.3.2017 08:12 samvila
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
I really loved reading your blog. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he ejoyed it as well! happy wheels happy wheels demo five nights at freddy's geometry dash
1.3.2017 10:28 nazumi
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thank you for another essential article. I have learned a lot from your article. Thank so much, again! hotmail login flip diving amazon underground apk
21.4.2017 05:41 word cookies answers
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows

I would like to say that this blog really convinced me to do it! Thanks, very good post. word cookies game | hotmail email login | hotmail account login

16.7.2017 16:56 Dan
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
class, kterým určíte jazyk pa portfolio logo design í být ve tvar.
5.8.2017 10:16 Thanks
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
hotmail login and hotmail outlook login are now running normally. “A few Microsoft services experienced an outage that affected customers' access to these services. skype infor
16.11.2017 12:40 happy new year
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
The New Year is the time of Happy New Year Wishes unfolding horizons and the realization of dreams, may you rediscover new strength and garner faith with you, and be able to rejoice in the simple pleasures that life has to offer and put a brave front for all the challenges that may come your way. Wishing you a lovely Happy New Year 2018 Images
10.3.2018 18:28 Lee Mark
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thanks bro for sharing the wonderful article... Smadav 2019 | Smadav 2019 | Avast 2019
11.5.2018 10:00 pk
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
i like the greta post thaks
24.7.2018 08:47 smadav
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
25.7.2018 05:06 Hotmail Login
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thank you for posting such a great article! I found your website perfect for my needs. It contains wonderful and helpful posts. Keep up the good work!. Thank you for this wonderful Article! http://hotmailblogs.com/
25.7.2018 05:07 Hotmail Login
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thank you for posting such a great article! I found your website perfect for my needs. It contains wonderful and helpful posts. Keep up the good work!. Thank you for this wonderful Article! Hotmail Login
25.7.2018 05:08 Hotmail.com Login
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Posts are very meaningful thanks to the site Hotmail.com Login
25.7.2018 05:09 Hotmail Login Tip
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Excellent post. This article is very helpful for the people and also for me. I get the some useful knowledge in this post. Thanks for sharing the informative topic, by the way Hotmail Login Tip
1.12.2018 09:58 pikachu chu
Rozbalit Rozbalit vše susu
Thank for your writting! I have read through some similar topics! However, your post has given me a very special impression, unlike other posts. I hope you continue to have valuable articles like this or more to share with everyone! the impossible quiz
8.1. 06:48 karishma36
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
I am having such a good time here on this article and i was taking a look on this information and then i have got many things from this article.You did such a great job and i wish for more. Delhi Escorts
31.1. 08:33 johnlennon
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Instagram is a social networking app which allows its users to share pictures and videos with their friends. The app can be downloaded for free from the usual app stores. You can start Instagram video downloader here.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.