Решено Вставка картинки в определенном масштабе

vitte

Well-known member
17.11.2011
57
0
#1
Как можно в RT поле формы программно вставить картинку в определенном масштабе (например 50% от ширины и 50% от высоты оригинального размера jpg файла)?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#2
DXML рулит
сохраняешь док как надо, экспортируешь и смотришь что изменилось
 

vitte

Well-known member
17.11.2011
57
0
#3
Т.е. менять только сохраненный документ? Применить свойства при вставке нельзя?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 584
271
#6
мы дрдр не понимаем...
ну можно вставить картинку и что дальше?
и показать можно, в чем вопрос?
[DOUBLEPOST=1445421509,1445421396][/DOUBLEPOST]как должен выглядеть процесс и что в нем вызывает вопросы?
 

erdi

Well-known member
20.08.2008
265
17
#7
кусок из java агента.....он забирает по url картинку, сохраняет на диск, уменьшает под определенный размер, сохраняет в документе в уменьшенном виде в виде импорта, а всю картинку в виде атача
Java:
// изменить размер
File oldpic =  new File(filepatch);
img = ImageIO.read(oldpic);
double aspectRatio = (double) img.getWidth(null)/(double) img.getHeight(null);
 
 
 
 
tempJPG = resizeImage(img, 164, (int) (173/aspectRatio));
filepatch_new=filepatch+".jpg";
newFileJPG = new File(filepatch_new);
ImageIO.write(tempJPG, "jpg", newFileJPG);
 
 
 
 
String filepatch_new_old=filepatch+"_old.jpg";
File newFileOldJPG = new File(filepatch_new_old);
ImageIO.write(ImageIO.read(oldpic), "jpg", newFileOldJPG);
 
// MIME mini
Stream stream = ses.createStream();
// Do not convert MIME to rich text
ses.setConvertMIME(false);
if (docR.hasItem("Body")){
docR.removeItem("Body");
}
MIMEEntity body = docR.createMIMEEntity();
 
 
 
 
if (stream.open(newFileJPG.getPath(), "binary")) {
  if (stream.getBytes() != 0) {
  body.setContentFromBytes(stream, "image/jpeg", MIMEEntity.ENC_IDENTITY_BINARY);
  }
  else System.out.println(newFileJPG.getPath());
}
else System.out.println("Error opening "+newFileJPG.getPath());
stream.close();
// Restore conversion
ses.setConvertMIME(true);
 
 
 
 
 
 
 
 
// приатачить full photo
if (docR.hasItem("bodyfull")){
docR.removeItem("bodyfull");
}
RichTextItem bodyfull = docR.createRichTextItem("bodyfull");
bodyfull.embedObject(EmbeddedObject.EMBED_ATTACHMENT, null, newFileOldJPG.getPath(), newFileOldJPG.getName());
 
 
 
 
docR.save(true, true);
 
 
 
 
body.recycle();
bodyfull.recycle();
docR.recycle();
 
Симпатии: Понравилось vitte

vitte

Well-known member
17.11.2011
57
0
#8
кусок из java агента.....он забирает по url картинку, сохраняет на диск, уменьшает под определенный размер, сохраняет в документе в уменьшенном виде в виде импорта, а всю картинку в виде атача
/QUOTE]

Да, скорее всего так и сделаю. Спасибо.
 

erdi

Well-known member
20.08.2008
265
17
#9
в довесок...не увидел
Java:
public static BufferedImage resizeImage(final Image image, int width, int height) {
		final BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		final Graphics2D graphics2D = bufferedImage.createGraphics();
		graphics2D.setComposite(AlphaComposite.Src);
		//below three lines are for RenderingHints for better image quality at cost of higher processing time
		graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
		graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
		graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
		graphics2D.drawImage(image, 0, 0, width, height, null);
		graphics2D.dispose();
		return bufferedImage;
	}