1. Script: Bild auf festes Verhältnis erweitern

Zaph

Mitglied
Registriert
13.01.03
Beiträge
191
Hi,
die neue Script-Funktion ist Klasse.
ich hab mal eine Funktion geschrieben, die ein Bild so um einen schwarzen Rahmen erweitert, dass ein festes Verhältnis Breite zu Höhe entsteht und einen prozentualen Rahmen hinzufügt.

Anwendung: Vorbereitung von Bildern für eine VCD-Fotoshow (4:3). Was fehlt, ist jetzt noch eine Skalierung auf eine festgelegte Auflösung (was man aber auch mit der Stapelverarbeitung machen kann).

Viel Spass und ohne Gewähr natürlich ;-)
Zaph
Code:
Dim i,j
Dim x,y
Dim imagenum 
Dim name 
Dim v
Dim dx, dy
Dim vx, vy, vg
Dim prahm

' Verhältnis x/y, hier 4/3
vx = 4
vy = 3
' Rahmenbreite in %, hier 5%
prahm = 5

vg = vy/vx

imagenum = FF_GetImageCount 
for i=0 to imagenum-1 
      name = FF_GetImageName(i) 
      call FF_LoadImage(name)
      x = FF_GetImageWidth
      y = FF_GetImageHeight

      v=y/x

      ' ggf. Breite ändern
      If v > vg Then
            dx = ((y / vy * vx) - x) / 2
            Call FF_ExtendCanvas(dx,dx,0,0,0,0,0) 
      End if

      ' ggf. Höhe ändern
      If v < vg Then
            dy = ((x / vx * vy) - y) / 2
            Call FF_ExtendCanvas(0,0,dy,dy,0,0,0) 
      End If

      ' Rahmen
      x = FF_GetImageWidth
      y = FF_GetImageHeight
      dx = x * prahm/100 / 2
      dy = y * prahm/100 / 2
      Call FF_ExtendCanvas(dx,dx,dy,dy,0,0,0) 
      Call FF_SaveImage(name,0)
next
 
Zuletzt bearbeitet von einem Moderator:
Re: 1. Script: Bild auf festes Verhältnis erweiter

Hallöchen,

habe mir erlaubt die Ideen der Scripte von Zaph und Ralf zusammen zufassen und folgendes Script ist dabei heraus gekommen.
Mit dem Script wird ein prozentualer Rahmen mit Farbverlauf erzeugt, bei dem man die prozentuale Größe und 7 verschiedenen Farben wählen kann.
Für eine freie Farbauswahl reichen meine Kenntnisse leider nicht. Vielleicht kann jemand das Script um diese Funktion erweitern.

Gruß
Wolliballa

Code:
dim Rahmenfarbe
dim RotAnfang,GruenAnfang,BlauAnfang
dim RotEnde,GruenEnde,BlauEnde
dim Rot,Gruen,Blau
dim RotSchritte,GruenSchritte,BlauSchritte
dim Bilderanzahl,RahmenInProzent,Rahmenpixel,Pixelbreite
dim imagenum,name,i

RahmenInProzent = InputBox(_
  "Mit diesem Script werden alle Bilder, die in der Computeransicht"_
  &amp; " markiert sind, mit einem Rahmen versehen."_
  &amp; Chr(13) &amp; chr(13) &amp;_
  "ACHTUNG, die Originaldateien werden überschrieben!!!!!"_
  &amp; chr(13) &amp; chr(13) &amp;_
  "Bitte geben Sie die prozentuale Rahmenbreite"_
  &amp;" in Bezug zur Bildbreite ein."_
  ,"Eingabe für Rahmenbreite",3)
  
If IsNumeric(RahmenInProzent) and RahmenInProzent <> "" then 

 RahmenFarbe = InputBox("Bitte geben Sie die Rahmenfarbe ein."_
  &amp; Chr(13)_
  &amp; chr(13) &amp; "1 = Graustufen"_
  &amp; chr(13) &amp; "2 = Rot"_
  &amp; chr(13) &amp; "3 = Grün"_
  &amp; chr(13) &amp; "4 = blau"_
  &amp; chr(13) &amp; "5 = Gelb"_
  &amp; chr(13) &amp; "6 = Lila"_
  &amp; chr(13) &amp; "7 = Türkis"_
  &amp; chr(13),_
  "Eingabe Rahmenfarbe",1)
 
 If IsNumeric(RahmenFarbe) then
    else
    RahmenFarbe = -1
 end if    
 Select Case RahmenFarbe
      Case 1 'Grau 
       RotAnfang = 75
       RotEnde = 230
       GruenAnfang = 75
       GruenEnde = 230
       BlauAnfang = 75
       BlauEnde = 230
    Case 2 'Rot
       RotAnfang = 75
       RotEnde = 230
       GruenAnfang = 0
       GruenEnde = 0
       BlauAnfang = 0
       BlauEnde = 0
     Case 3 'Grün 
       RotAnfang = 0
       RotEnde = 0
       GruenAnfang = 75
       GruenEnde = 230
       BlauAnfang = 0
       BlauEnde = 0
     Case 4 'Blau 
       RotAnfang =05
       RotEnde = 0
       GruenAnfang = 0
       GruenEnde = 0
       BlauAnfang = 75
       BlauEnde = 230
     Case 5 'Gelb
       RotAnfang = 75
       RotEnde = 230
       GruenAnfang = 75
       GruenEnde = 230
       BlauAnfang = 0
       BlauEnde = 0
     Case 6 'Lila 
       RotAnfang = 75
       RotEnde = 230
       GruenAnfang = 0
       GruenEnde = 0
       BlauAnfang = 75
       BlauEnde = 230
     Case 7 'Türkis
       RotAnfang = 0
       RotEnde = 0
       GruenAnfang = 75
       GruenEnde = 230
       BlauAnfang = 75
       BlauEnde = 230
     Case -1
       msgbox "Bitte nur Zahlen eingeben"
       RahmenFarbe = ""
     Case Else 
       msgbox Rahmenfarbe &amp; " ist keine gültige Auswahl"
       RahmenFarbe = ""
 End Select

 If IsNumeric(RahmenFarbe) and RahmenFarbe <> "" then
  
  imagenum = FF_GetImageCount
  
  for Bilderanzahl = 0 to imagenum -1
    name = FF_GetImageName(Bilderanzahl)
    call FF_LoadImage(name)

    Pixelbreite = FF_GetImageWidth
    
    Rahmenpixel = Pixelbreite * RahmenInProzent / 100
  
    RotSchritte = (RotAnfang-RotEnde) / Rahmenpixel
    GruenSchritte = (GruenAnfang-GruenEnde) / Rahmenpixel
    BlauSchritte = (BlauAnfang-BlauEnde) / Rahmenpixel

    Rot = RotAnfang
    Gruen = GruenAnfang
    Blau = BlauAnfang

    for i = 1 to Rahmenpixel
      call FF_ExtendCanvas(1,1,1,1,Rot,Gruen,Blau)
      Rot = Rot - RotSchritte
      Gruen = Gruen - GruenSchritte
      Blau = Blau - BlauSchritte
    next
    
    call FF_SaveImage(name,0)
  next
 end if
end if
 
Zuletzt bearbeitet von einem Moderator:
Re: 1. Script: Bild auf festes Verhältnis erweiter

Leider sind bei der Übertragung des Scripts ein paar Leerzeichen verloren gegangen und somit ein wenig die Übersichtlichkeit. Schade eigentlich

Wolliballa
 
Re: 1. Script: Bild auf festes Verhältnis erweiter

Hallo Wolliballa, Zaph und andere Skripter!

Zur Beachtung:

1. Falls Postings nicht so aussehen wie gewünscht, kann jeder 'Eigentümer' sie auch nachträglich bearbeiten.

2. Für das Einfügen von Programmlistings empfiehlt es sich die Posting-Knöpfe 'Code einfügen' und 'Schriftgröße' zu verwenden und zwar immer zusammen. Unsere Standardschriftgröße ist 2. Für Listings wird als Default der Courier Schriftschnitt verwendet: Besser dabei belassen!

Gruß,

Ralf
 
Re: 1. Script: Bild auf festes Verhältnis erweiter

@Wolliballa: sieht prima aus, dein Produkt. Es ist schon gut mit der Sript-Rubrik.
Christian
 
Re: 1. Script: Bild auf festes Verhältnis erweiter

Hallo Wolliballa, :D
toll Ihr legt Euch echt ins Zeug.
Ich habe leider keine Ahnung von der Programmierung der Scripts, aber anwenden werde ich sie.
Besonders gut finde ich, daß Du eine Abfrage Box mit eingebaut hast,so kann man auch als Anwender damit umgehen.
es währe schon wenn jedes Script so aufgebaut währe.

Mit freundl.Gruß Jörg
 
Zurück
Oben