Kirjoittaja Aihe: Imagemagick -crop[Ratkaistu]  (Luettu 3728 kertaa)

JJK

  • Käyttäjä
  • Viestejä: 359
  • Ubuntu Mate 22.04
    • Profiili
Imagemagick -crop[Ratkaistu]
« : 21.12.09 - klo:15.15 »
Pilkon png-kuvia Imagemagick:llä. Ongelma on tyhjät(tansparent) kuvat joissa ei ole väri pikseleitä.
Mitenkähän voisin poistaa ne tai pilkkoa niin ettei niitä tulisi?

Tässä Imagemagick:n esim.
Koodia: [Valitse]
 convert rose: -crop 20x20 -set filename:tile "%[fx:page.x/20+1]_%[fx:page.y/20+1]" +repage +adjoin "rose_tile_%[filename:tile].gif"
edit: muokattu teksti näkyviin
« Viimeksi muokattu: 26.12.09 - klo:15.00 kirjoittanut JJK »

mikko_h

  • Käyttäjä
  • Viestejä: 202
    • Profiili
Vs: Imagemagick -crop
« Vastaus #1 : 21.12.09 - klo:15.52 »
Ahaa.

JJK

  • Käyttäjä
  • Viestejä: 359
  • Ubuntu Mate 22.04
    • Profiili

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Imagemagick -crop
« Vastaus #3 : 22.12.09 - klo:15.13 »
Toisin sanoen ekan viestin tekstisi on salaikirjoitusmoodissa. Eli ei näy ainakaan mulle, mitä sitten oletkin ekaan viestiisi kirjoittanut.

JJK

  • Käyttäjä
  • Viestejä: 359
  • Ubuntu Mate 22.04
    • Profiili
Vs: Imagemagick -crop
« Vastaus #4 : 22.12.09 - klo:22.56 »
Nyt pitas näkyä.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11433
    • Profiili
    • Tomin kotisivut
Vs: Imagemagick -crop
« Vastaus #5 : 22.12.09 - klo:23.55 »
Nyt pitas näkyä.
Juu hyvin toimii.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

snifi

  • Vieras
Vs: Imagemagick -crop
« Vastaus #6 : 25.12.09 - klo:00.56 »
Hätätapauksessa voisi kokeilla Pythonilla (versiot 2.x) jotenkin näin, ei minusta kauhean helppo tehtävä:

Koodia: [Valitse]
from PIL import Image
filenames=("transparent.png","nontransparent.png")

for fname in filenames:
  img=Image.open(fname)
  im=img.load()
  xmax,ymax=img.size
  contains_information=False
  for x in range(xmax):
    for y in range(ymax):
      t=im[x,y]
      if t!=(0,0,0,0): contains_information= True
  print "Filename:", fname
  print "Size in px:", img.size
  print "Contains information: ", contains_information
  if not contains_information: print "This file is about to be deleted!"
  print "-"*30

Kokeilin kahteen Gimpillä tekemääni kuvaan, joista ensimmäinen läpinäkyvä, jälkimmäiseen piirrettynä epämääräisiä viivoja:
Koodia: [Valitse]
Filename: transparent.png
Size in px: (420, 300)
Contains information:  False
This file is about to be deleted!
------------------------------
Filename: nontransparent.png
Size in px: (420, 300)
Contains information:  True
------------------------------

En tiedä toimiiko menetelmä yleispätevästi.

JJK

  • Käyttäjä
  • Viestejä: 359
  • Ubuntu Mate 22.04
    • Profiili
Vs: Imagemagick -crop
« Vastaus #7 : 25.12.09 - klo:08.35 »
Miten tälläinen pyython-koodi suoritetaan ??

Näin antaa virhettä.
Koodia: [Valitse]
xx@pc:~/test$ ./test.py
from: can't read /var/mail/PIL
./test.py: line 5: syntax error near unexpected token `img=Image.open'
./test.py: line 5: `  img=Image.open(fname)'

Jos kommentoi eka("from PIL import Image") rivin pois niin virheestä jää vain rivi "from: can't read /var/mail/PIL" pois.

Vai tartteeko perus Ubuntuun asentaa jotain paketteja, että tämä toimis?

snifi

  • Vieras
Vs: Imagemagick -crop
« Vastaus #8 : 25.12.09 - klo:13.55 »
Paketti lienee python-imaging


Voit kokeilla sen olemassaoloa kirjoittamalla komentotulkkiin (vahvennetut kohdat):
Lainaus
user@home:~$ python
Python 2.5.1 (r251:54863, Jul 31 2008, 23:17:43)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>>
[Ctrl-D]

Python-ohjelmat suoritetaan käytännössä komennolla python skripti.py

Vaihtoehtoisesti voit lisätä skriptin ensimmäiselle riville:
Koodia: [Valitse]
#!/usr/bin/pythontai
Koodia: [Valitse]
#!/usr/bin/env pythonriippuen miten polut ja ympäristömuuttujat on koneessasi asennettu. Lisäksi täytyy lisätä ruksi ohjelman suoritusoikeuksiin. Sen jälkeen voit kutsua ohjelmaa suoraan ./skripti.py, tai jättää jopa tiedostopäätteen pois.

Tarvitset ehkä myös rutiinit hakemiston läpikäyntiin, en nyt jaksa kokeilla miten se tässä tapauksessa menisi, vaan heitän tähän pätkän toisesta ohjelmasta, jossa sama tehdään eri tarkoituksessa:
Koodia: [Valitse]
import os, sys
import re

# esim muuttamalla: rexp = ".*png$" lapikay png-paatteiset tiedostot:
rexp = ".*" # all files
p = re.compile(rexp)

t = []
for root, dirs, files in os.walk('.'): # current directory
  for f in files:
    filename = "%s%s%s" % (root, os.sep, f)
    if p.match(filename) and os.stat(filename)[6] > 0:
      t.append(filename)

for f in t:
  print "# %s" % f
« Viimeksi muokattu: 25.12.09 - klo:14.01 kirjoittanut snifi »

JJK

  • Käyttäjä
  • Viestejä: 359
  • Ubuntu Mate 22.04
    • Profiili
Vs: Imagemagick -crop
« Vastaus #9 : 25.12.09 - klo:22.48 »
Kiitos snifi näistä.

Nyt olen tässä vaiheessa:
Koodia: [Valitse]
import os, sys
import re

from PIL import Image

rexp = ".*png$"
p = re.compile(rexp)

t = []
for root, dirs, files in os.walk('.'):
  for fname in files:
    filename = "%s%s%s" % (root, os.sep, fname)
    if p.match(filename) and os.stat(filename)[6] > 0:
      img=Image.open(filename)
      im=img.load()
      xmax,ymax=img.size
      contains_information=False
      for x in range(xmax):
        for y in range(ymax):
          t=im[x,y]
          if t!=(0,0,0,0): contains_information= True
      if not contains_information: print "Filename:", filename , "This file is about to be deleted!"

Mutta en tiedä enkä löydä mistään miten poistan tiedoston tai suoritan poisto komennon Pythonilla?

snifi

  • Vieras
Vs: Imagemagick -crop
« Vastaus #10 : 26.12.09 - klo:00.09 »
Tiedoston poisto on
os.remove(filename)
http://docs.python.org/library/os.html#os.remove

Toisaalta voit myös poistaa tai kommentoida pois kaikki print-lauseet, ja tulostaa ainoastaan luettelon tiedostoista .sh-tiedostoon:
Koodia: [Valitse]
rm transparent001.png
rm transparent002.png
rm transparent003.png
siltä varalta, että haluat tehdä muita toimenpiteitä tiedostoille komentotulkin kautta.

JJK

  • Käyttäjä
  • Viestejä: 359
  • Ubuntu Mate 22.04
    • Profiili
Vs: Imagemagick -crop[Ratkaistu]
« Vastaus #11 : 26.12.09 - klo:15.04 »
Nyt toimii.
Lähti n.2500 kpl  turhaan ladattavaa kuvaa pois.

Kiitti avusta.