Paint Shop Pro 8: Afbeeldinggegevens opvragen

  • Onderwerp starter Onderwerp starter Eelc
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Eelc

Gebruiker
Lid geworden
24 okt 2011
Berichten
6
Goedemorgen,

Ik zoek een script dat:
- aan een geopende afbeelding de AspectRatio opvraagt
- deze vervolgens via print op het scherm projecteert.

Wie kan mij daarbij helpen?

Alternatief:
- Opvragen van de pixelbreedte van de afbeelding
- Opvragen van de pixelhoogte
- Deze op elkaar delen

Alvast bedankt,

Eelc
 
Ik doe dat zelf via ImageMagick. Je kunt daaruit de commandline tool gebruiken: identify -ping plaatje.jpg
Geeft als resultaat (bijvoorbeeld):
plaatje.jpg JPEG 2640x2772 2640x2772+0+0 8-bit DirectClass 1.089MBB 0.000u 0:00.000

Ik gebruik zelf de programmeertaal Perl en dan is ImageMagick een module en daarmee kun je elk aspect opvragen en daar berekeningen mee uitvoeren:

use strict;
use Image::Magick;

my $image = Image::Magick->new;
$image->Read("plaatje.jpg");
my ($width,$height) = $image->Get('width','height');
my $ratio = $width / $height;
 
Beste RandurSource,

Heel fijn dat je me wilt helpen.

Het punt is dat ik de informatie nodig heb binnen PsPScript (Python = het script van PaintShopPro)
Ik gebruik de info namenlijk voor een beslismoment (als AspectRatio > 2 doe dit, else doe dat) binnen
een afbeeldingsbewerkingsroutine van Paint Shop Pro 8.

Het PsPScript snapt het PerlScript niet.

Ondertussen is het gelukt om pixelbreedte en pixelhoogte op te vragen.
Het probleem is nu dat de informatie waarschijnlijk als string en niet als getal aanwezig is.

Hoe zet ik (met PsPScript) de 'unicode' 3644 om naar een 'float' 3644 ?
Dan kan ik daarna de AspectRatio uitrekenen.

Nogmaals dank voor de hulp van RandurSource

Eelc
 
Laatst bewerkt:
Ha, opgelost !

def Do(Environment):
ImageKeys = [ 'ExifPixelHeight', 'ExifPixelWidth']
Info = App.Do( Environment, 'ReturnImageInfo' )

print 'Afbeeldingsgegevens: '

breed = Info['ExifPixelWidth']
hoog = Info['ExifPixelHeight']
print breed, ' x ', hoog, ' pixels'

# de gegevens in unicode omzetten naar een getal (float):
breed = float(breed)
hoog = float(hoog)

Ratio = breed / hoog
print 'AspectRatio :', Ratio
print

Wanneer je de gegevens niet naar het script output window wilt sturen is het korter.
Je kunt dan ook gelijk de vertaalslag naar float maken:

def Do(Environment):
ImageKeys = [ 'ExifPixelHeight', 'ExifPixelWidth']
Info = App.Do( Environment, 'ReturnImageInfo' )

breed = float(Info['ExifPixelWidth'])
hoog = float(Info['ExifPixelHeight'])

Ratio = breed / hoog
print 'AspectRatio :', Ratio


Tot help,

Eelc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan