Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

mar_les

Napisanie skryptu/ programiku do zczytywania danych

Rekomendowane odpowiedzi

Witam,

 

Chciałem sie dopyttać czy wie ktoś jak napisać programik albo skrypt do zczytywania danych (dokładnie) wymiarów szerokości i wysokości z pliku. dane te są zawsze w tym samym miejscu, mlik można odczytać neopadem czy innym prostym edytorem tekstowym, w domyśle dobrze by było aby dane te można by zapisać do dok tekstowego.` coś takiego ejst możliwe??

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Oczywiście, że jest możliwe. W czym chciałbyś to napisać?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W czymś prostym:) Powiem tak moja przygoda z programowania zakończyła się na etapie pascala:P Wiec coś w miarę prostego aby było:)

 

Co możesz zaproponować? I jake wskazówki mi dać:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W czymś prostym:) Powiem tak moja przygoda z programowania zakończyła się na etapie pascala:P Wiec coś w miarę prostego aby było:)

 

Co możesz zaproponować? I jake wskazówki mi dać:)

 

Nagraj sobie makro w excel z importem danych zewnętrznych i jak masz jakieś blade pojęcie o programowaniu to sobie je dostosujesz do własnych potrzeb

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Znalazłem gotowe rozwiązanie z wyświetlaniem wszystkich argumentów obrazka:

 

require 'RMagick'

ARGV.each { |file|
   puts file
   img = Magick::Image::read(file).first
   puts "   Format: #{img.format}"
   puts "   Geometry: #{img.columns}x#{img.rows}"
   puts "   Class: " + case img.class_type
                           when Magick::DirectClass
                               "DirectClass"
                           when Magick::PseudoClass
                               "PseudoClass"
                       end
   puts "   Depth: #{img.depth} bits-per-pixel"
   puts "   Colors: #{img.number_colors}"
   puts "   Filesize: #{img.filesize}"
   puts "   Resolution: #{img.x_resolution.to_i}x#{img.y_resolution.to_i} "+
       "pixels/#{img.units == Magick::PixelsPerInchResolution ?
       "inch" : "centimeter"}"
   if img.properties.length > 0
       puts "   Properties:"
       img.properties { |name,value|
           puts %Q|      #{name} = "#{value}"|
       }
   end
   }

 

musisz tylko sobie zainstalować Ruby'ego i Rmagick do tego.

 

Ruby - tu: http://www.ruby-lang.org/pl/downloads/

Ja mam wersję 1.8.7. Nie wiem, jak na innych to by działało.

jak już zainstalujesz, to wejdź do CMD i napisz

gem install rmagick

 

aha, skrypt odpalasz poprzez wydanie jego nazwy w CMD i ARGV, czyli po nazwie podajesz nazwę pliku/ścieżkę do pliku.

przykład:

 

nazwa_skryptu 7_logo.png

 

Output wygląda tak:

 

7_logo.png

Format: PNG

Geometry: 214x68

Class: DirectClass

Depth: 8 bits-per-pixel

Colors: 3591

Filesize: 12027

Resolution: 72x72 pixels/centimeter

Properties:

date:create = "2011-10-28T10:29:10+02:00"

date:modify = "2011-10-28T10:29:10+02:00"

Software = "Adobe ImageReady"

 

to wywala na ekran, jak chcesz do pliku, to musisz chwilę poczekać, to dopiszę.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale to działa tylko na png czy jest szansa by to przerobić by z plików 1 bitowych tif np zczytywało i z kilku plików:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale to działa tylko na png czy jest szansa by to przerobić by z plików 1 bitowych tif np zczytywało i z kilku plików:)

 

Dobra tu masz gotowe:

 


require 'RMagick'

filename = 'file_res.txt'

to_write = File.new(filename, "w")

ARGV.each { |file|
   img = Magick::Image::read(file).first
   geometry = img.columns.to_s + ' x ' + img.rows.to_s
   if img.properties.length > 0
       write_to_file = "#{file} resolution is : #{geometry}"
       puts write_to_file
       to_write.puts(write_to_file)
   end
   }
to_write.close  

 

działa na pewno dla png i dla gif. Co to reszty, to musiałbym przetestować. Aha ta wersja zapisuje do pliku pod nazwą file_res.txt w katalogu, gdzie to odpalasz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra, działa, dla wszystkich ważniejszych rozszerzeń:

 

dla

imagesize2.rb 7_logo.png 7_logo.gif 7_logo.tif 7_logo.jpg 7_logo.png 7_logo.bmp

 

produkuje plik:

 

7_logo.png resolution is : 214 x 68
7_logo.gif resolution is : 214 x 68
7_logo.tif resolution is : 214 x 68
7_logo.jpg resolution is : 214 x 68
7_logo.png resolution is : 214 x 68
7_logo.bmp resolution is : 214 x 68

 

więc chyba spełnia założenia :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a czy możliwe jest aby z automatu robił info o wymiarach z kilku (wszystkich) plików które znajdują się w katalogu pod różnymi nazwami? i zapisywał to do 1 pliku txt??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a czy możliwe jest aby z automatu robił info o wymiarach z kilku (wszystkich) plików które znajdują się w katalogu pod różnymi nazwami? i zapisywał to do 1 pliku txt??

 

no przecież to wlaśnie robi. Musisz mu tylko, jako argumenty podać nazwy plików z rozszerzeniami.

 

Skrypt, ale w rubym masz powyżej. To jest cały kod. Więcej nic nie potrzeba.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

oki ale gdzie wklepać ten kod itp:)

 

A dodatkowo przypuścimy że mam kilka katalogów dziś 3567 a za tydzień potrzebuje z 3890 czy za każdym razem skrypt musze zmieniać?

 

I czy ten skrypt ajkoś kompilować musze bo ni jak mi anrazie nie idzie;/ i gdzie to rb rozszerzenie się zrobi:P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

aha, tu jest konfuzja :)

 

- to jest skrypt Ruby'ego. Musisz sobie zainstalować Ruby'ego. Znajdziesz go pod linkiem, który podałem wcześniej.

- kod z posta nr7 wklej do notatnika i zapisz z rozszerzeniem .rb

- co do tych katalogów, to:

* '3567' to nazwa katalogu, czy ilość katalogów?

* łażenie po katalogach i dopisywanie do pliku, to dodatkowo sporo roboty i kod będzie zapewne dłuższy ze dwa razy od obecnego, ale da się zrobić.

- kompilować nic nie musisz. Jak zainstalujesz sobie Ruby'ego, skrypt się skompiluje sam w wirtualnej maszynie ruby'ego i odpali. Wystarczy tylko wywołać go po nazwie. Jeśli masz zainstalowanego Ruby'ego, a dalej to nie działa, to musisz dopisać katalog z Rubym do ścieżek systemowych.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

SyntaxError: compile error

 

Takie coś mam:P

 

a jak ten katalog dopisać do systemu??:D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Skoro masz compile error, to znaczy, że coś nie tak jest z Ruby'm.

 

Anyway ścieżkę dopisujesz w prawy na mój komputer -> właściwości -> Ustawienia zaawansowane -> zmienne środowiskowe

Edytujesz Path i sprawdzasz, czy masz tam Ruby'ego. Jak nie to dodajesz katalog z nim, który na ogół instaluje się na C:, więc powinno być C:\Ruby\bin.

 

Jaki system operacyjny?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

XP ale mam możliwośc na macu też

 

No dodałem i nic to samo. Ruby 187

 

I wysołuje go przez interative ruby

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

OK, a sprawdź w IRB (interactive ruby) po prostu coś takiego:

 

print 'dupa'

 

wklej jeszcze wyjście z:

 

CMD ->

gem list

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

coby zakończyć tę nierówną walkę z materią masz tu alternatywę którą napisałem w C# pod Windowsa :)

 

projekt w SharpDevelop (Można otwierać MS Visual C# Express lub Pełnym)

http://www.sendspace.com/file/rtf7uu

 

aplikacja jest powolna bo musi otworzyć każdy plik i go zbadać, można to zrobić również w szybszy sposób ale akurat jest Family Guy nowy i musze obejrzeć :E

 

PS. Zapomniałem dodać "suwaka" do dolnego pol tekstowego, tam sobie klikniesz :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...