Einzelnen Beitrag anzeigen

CHackbart

Registriert seit: 22. Okt 2012
267 Beiträge
 
#21

AW: iOS7 XE5 Appstore geht nicht ?!

  Alt 6. Okt 2013, 10:20
Also sofern man die 3 zusätzlichen Bildformate (144x144, 120x120, 152x152) in die plist einträgt funktionieren die für IOS7 entwickelten Apps auch mit dem Apploader. Der zickt jedoch aus unerfindlichen Grünen mitunter - so hatte ich gestern andauernd "application identifier entitlement is missing" Fehler die aber heute morgen mit der selben Binary nicht mehr aufgetreten sind.
Was mir etwas fehlt ist so ein automatischer Wizard der die 18 Icons?!? auf Basis eines Bildes erstellt. Bis auf die Hintergrundbilder sind die ja sowieso alle quadratisch und da bietet es sich an etwas an Arbeit abzunehmen Auch reichen meiner Meinung nach für die Loader schwarze PNG's, denn mitunter sieht man diese sowieso nur 1-2 Sekunden und dafür lohnt es sich nicht wirklich bunte Bilder mit Auflösungen die teilweise die des eigenen Monitors überschreiten zu erstellen.

Delphi-Quellcode:
function FitRect(var R: TRectF; const BoundsRect: TRectF): Single;
var
  ratio: Single;
begin
  Result := 1;
  if RectWidth(BoundsRect) * RectHeight(BoundsRect) = 0 then
    Exit;
  if (RectWidth(R) / RectWidth(BoundsRect)) >
    (RectHeight(R) / RectHeight(BoundsRect)) then
    ratio := RectWidth(R) / RectWidth(BoundsRect)
  else
    ratio := RectHeight(R) / RectHeight(BoundsRect);

  R := RectF(0, 0, round(RectWidth(R) / ratio), round(RectHeight(R) / ratio));

  Result := ratio;
  RectCenter(R, BoundsRect);
end;

procedure TfrmWizard.FormCreate(Sender: TObject);
begin
  btnConvert.enabled := false;
  FDir := '';
end;

procedure TfrmWizard.btnLoadClick(Sender: TObject);
begin
  if dlgOpen.Execute then
  begin
    FDir := extractfilepath(dlgOpen.FileName);
    btnConvert.enabled := true;
    imgOriginal.Bitmap.LoadFromFile(dlgOpen.FileName);
  end;
end;

procedure TfrmWizard.btnConvertClick(Sender: TObject);

const
  cSizes: Array [0 .. 10] of integer = (29, 50, 57, 58, 72, 76, 100, 114, 120,
    144, 152);
  cLayoutSizes: Array [0 .. 6] of record x,
    y: integer end = ((x: 1024; y: 748), (x: 1536; y: 2008), (x: 2048; y: 1496),
    (x: 320; y: 480), (x: 640; y: 1136), (x: 640; y: 960), (x: 768; y: 1004));

var
  i: integer;
  bmp: TBitmap;
  src, dst: TRectF;
begin
  for i := 0 to high(cSizes) do
  begin
    bmp := TBitmap.Create(cSizes[i], cSizes[i]);
    bmp.Canvas.BeginScene(nil);
    bmp.Canvas.Clear(0);
    src := RectF(0, 0, imgOriginal.Bitmap.Width, imgOriginal.Bitmap.Height);
    dst := src;
    FitRect(dst, RectF(0, 0, bmp.Width, bmp.Height));

    bmp.Canvas.DrawBitmap(imgOriginal.Bitmap, src, dst, 1);
    bmp.Canvas.EndScene;
    bmp.SaveToFile(format('%s%dx%d.png', [FDir, cSizes[i], cSizes[i]]));
    bmp.Free;
  end;

  for i := 0 to high(cLayoutSizes) do
  begin
    bmp := TBitmap.Create(cLayoutSizes[i].x, cLayoutSizes[i].y);
    bmp.Clear($FF000000);
    bmp.SaveToFile(format('%s%dx%d.png', [FDir, cLayoutSizes[i].x,
      cLayoutSizes[i].y]));
    bmp.Free;
  end;
end;
Vielleicht findet jemand obigen Code ja praktisch.

Geändert von CHackbart ( 6. Okt 2013 um 10:52 Uhr)
  Mit Zitat antworten Zitat